对象池的简单实现

 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4
 5 public class GameInstatie : MonoBehaviour {
 6
 7     private Stack<GameObject> GameManager = new Stack<GameObject>();//未激活怪我的对象池
 8     private Stack<GameObject> IntatiaManager = new Stack<GameObject>();//激活怪物的对象池;
 9     public Transform transform;  //设置的父物体位置;
10     public GameObject Cube;  //所需要实例化的物体;
11     // Use this for initialization
12     void Start () {
13
14     }
15
16     // Update is called once per frame
17     void Update () {
18         //点击鼠标左键生成物体
19         if (Input.GetMouseButtonDown(0))
20         {
21             if (GameManager.Count > 0)
22             {
23                 GameObject obj = GameManager.Pop();
24                 obj.SetActive(true);
25                 IntatiaManager.Push(obj);
26                 Debug.Log(IntatiaManager.Count);
27
28             }
29             else
30             {
31                 GameObject obj = Instantiate(Cube);
32                 IntatiaManager.Push(obj);
33                 Debug.Log(IntatiaManager.Count);
34             }
35         }
36         //点击鼠标右键把已经生成的物体回收
37        if (Input.GetMouseButtonDown(1))
38         {
39             if (IntatiaManager.Count > 0)
40             {
41              Debug.Log(IntatiaManager.Count);
42              GameObject obj =     IntatiaManager.Pop();
43              obj.transform.SetParent(transform);
44              obj.SetActive(false);
45              GameManager.Push(obj);
46
47             }
48
49         }
50
51
52     }
53 }

原文地址:https://www.cnblogs.com/mafeihao/p/10110632.html

时间: 2025-01-18 03:37:46

对象池的简单实现的相关文章

对象池的简单使用

using System.Collections; using System.Collections.Generic; using UnityEngine; public class DemoPool : MonoBehaviour { //要实例的物体 public GameObject monsterPrefab; //存放物体的对象池 未激活 private List<GameObject> monsterList = new List<GameObject>(); //激活

对象池ObjectPool的简单实现

我对对象池的简单理解:当一个游戏需要产生大量游戏物体又需要频繁销毁时,可用一个对象池将游戏物体存储起来.目的是优化内存. 以下两篇我参考过觉得OK的博文: https://blog.csdn.net/u013236878/article/details/52443066 https://www.jianshu.com/p/6133fb7e0819 unity内简单实现一下: 1.canvas下新建空物体命名为07_ObjectPool,新建一个cube 2.创建一个脚本,内容如下,挂载在空物体上

C++实现简单的对象池

对象池的实现其实是非常简单的 思想也是很简单的: 用一个队列来存放所有的对象,需要时get一个对象,从队列头取一个对象,当用完后,重新将该对象投入到队列尾部. #ifndef OBJ_POOL_H_ #define OBJ_POOL_H_ #include <queue> #include <memory> #include <stdexcept> using std::queue; using std::shared_ptr; template <typenam

对象池实现分析

对象池实现分析 什么是对象池技术?对象池应用在哪些地方? 对象池其实就是缓存一些对象从而避免大量创建同一个类型的对象,类似线程池的概念.对象池缓存了一些已经创建好的对象,避免需要时才创建对象,同时限制了实例的个数.池化技术最终要的就是重复的使用池内已经创建的对象.从上面的内容就可以看出对象池适用于以下几个场景: 创建对象的开销大 会创建大量的实例 限制一些资源的使用 如果创建一个对象的开销特别大,那么提前创建一些可以使用的并且缓存起来(池化技术就是重复使用对象,提前创建并缓存起来重复使用就是池化

屏幕坐标和世界坐标的转换+对象池技术(3D打地鼠小游戏)

游戏中可能经常会遇到需要某个物体跟着鼠标移动,然后又需要把物体放在某个鼠标指定的位置 实现方式 Camera.main.WorldToScreenPoint Camera.main.ScreenToWorldPoint 3D打地鼠实例 我这里用到的素材都比较简陋,几乎全是用Unity做的 首先是锤子 就是两个Cylinder,在把手的位置放一个空物体用于模拟锤子的动作,命名为Hammer,把锤子作为Hammer的子物体,给Hammer添加Animation动画: 在三个关键帧位置设置Hammer

深度剖析C++对象池自动回收技术实现

http://www.tuicool.com/articles/mQBfQfN 对象池可以显著提高性能,如果一个对象的创建非常耗时或非常昂贵,频繁去创建的话会非常低效.对象池通过对象复用的方式来避免重复创建对象,它会事先创建一定数量的对象放到池中,当用户需要创建对象的时候,直接从对象池中获取即可,用完对象之后再放回到对象池中,以便复用.这种方式避免了重复创建耗时或耗资源的大对象,大幅提高了程序性能.本文将探讨对象池的技术特性以及源码实现. 对象池类图 ObjectPool:管理对象实例的pool

Unity3D中对象池的实现

在Unity中常常会遇到需要重复创建,销毁某些物体的情况,比如fps类游戏中的子弹,rpg类游戏中的小怪等等,如果直接使用Instantiate和Destroy的话,会浪费系统的资源,而使用对象池则能够节省下这些浪费. 这里使用一个重复利用子弹的进行发射的简单场景来演示对象池. 首先需要一个在场景中创建一个Cube,充当子弹. 然后在Assets目录下创建Resources文件夹,在Cube上添加上刚体,取消重力后,将Cube拖入Resources文件夹内作为一个预设,在场景中删除这个Cube.

java数据库连接池技术简单使用

JDBCDemo.java: package com.itheima.jdbc; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import com.itheima.pool.MyPool; public class JDBCDemo { public static void main(String[]

Netty轻量级对象池实现分析

什么是对象池技术?对象池应用在哪些地方? 对象池其实就是缓存一些对象从而避免大量创建同一个类型的对象,类似线程池的概念.对象池缓存了一些已经创建好的对象,避免需要时才创建对象,同时限制了实例的个数.池化技术最终要的就是重复的使用池内已经创建的对象.从上面的内容就可以看出对象池适用于以下几个场景: 创建对象的开销大 会创建大量的实例 限制一些资源的使用 如果创建一个对象的开销特别大,那么提前创建一些可以使用的并且缓存起来(池化技术就是重复使用对象,提前创建并缓存起来重复使用就是池化)可以降低创建对