对象池(单例)
来源:互联网 发布:js点击跳转到指定页面 编辑:程序博客网 时间:2024/05/16 14:00
using System.Collections;using System.Collections.Generic;using UnityEditor;using UnityEngine;using DevelopEngine;//单例对象池public class GameObjectPool:MonoSingleton<GameObjectPool> { //public static GameObjectPool instance;//单例 public GameObject[] prefabs; private Dictionary<string, List<GameObject>> pool = new Dictionary<string, List<GameObject>>();//对象池字典 void Awake() { // instance = this; } //从池中获取 public GameObject GetOut(string GameObjectName, Vector3 vector3) { GameObject gameObject; //对象池中有物体 if (pool.ContainsKey(GameObjectName) && pool[GameObjectName].Count > 0) { gameObject = pool[GameObjectName][0]; gameObject.SetActive(true); gameObject.transform.position = vector3; //取完后移除 pool[GameObjectName].RemoveAt(0); } else//池中没有需要的预设体 { GameObject prefab = null; //要生成的预设体 for (int i = 0; i < prefabs.Length; i++) { if (prefabs[i].name == GameObjectName) { prefab = prefabs[i]; } } //生成的预设体 gameObject = Instantiate(prefab) as GameObject; } return gameObject; } //存入对象池 public void SetIn(string GameobjectName, GameObject gameobject) { //池中没有 if (!pool.ContainsKey(GameobjectName)) { //新建list pool.Add(GameobjectName, new List<GameObject>()); } //存入池 gameObject.SetActive(false); pool[GameobjectName].Add(gameObject); } //销毁对象池 public void DestroyPool(string GameObjectName) { if (pool.ContainsKey(GameObjectName)) {//删除对象 for (int i = 0; i < pool[GameObjectName].Count; i++) { Destroy(pool[GameObjectName][i]); } //移除列表 pool.Remove(GameObjectName); } }}
阅读全文
0 0
- 对象池(单例)
- 单例模式对象池
- Unity之对象池(单例对象池和泛型对象池)
- 面向对象:单例模式(Singleton)
- 探索Scala(3)-- 单例对象
- 单例对象问题
- Scala 单例对象
- 单例对象
- 33.单例对象
- Scala单例对象
- 单例对象创建
- 面向对象 单例
- Scala单例对象
- Class对象-单例
- 单例模式,单例对象
- 单例对象与单例模式
- java 单例对象同步
- 对象复制与单例
- Nginx配置阿里云https服务
- 什么是顶级域名和一级域名,如何区分
- 搭建Eclipse+ADT+Android SDK 安卓开发环境+创建andorid project
- linux下IntelliJ IDEA License Server本地搭建教程
- Redis之集群安装-yellowcong
- 对象池(单例)
- 支付宝原理
- 修改程序标题
- StringUtil类的常用方法
- 3-5 学生成绩统计
- NLP
- js中的数据类型、非运算、等值判断
- oxc000014c解决方法
- 51nod 1418放球游戏(逻辑简化)