首页 > 其他分享 >Unity 2019中对象池的用法

Unity 2019中对象池的用法

时间:2023-05-05 22:23:09浏览次数:31  
标签:obj 对象 GameObject 用法 Unity 2019 objectPool 5f ObjectPool

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ExamplePool : MonoBehaviour
{
private ObjectPool<GameObject> objectPool;

public GameObject objectType;

public int poolSize = 10;

void Start()
{
objectPool = new ObjectPool<GameObject>(() =>
{
GameObject obj = Instantiate(objectType);
obj.SetActive(false);
return obj;
}, poolSize);
}

void Update()
{
GameObject obj = objectPool.Get();
obj.SetActive(true);
obj.transform.position = new Vector3(Random.Range(-5f, 5f), 1f, Random.Range(-5f, 5f));

StartCoroutine(ReleaseObjectAfterDuration(obj, 1f));
}

private IEnumerator ReleaseObjectAfterDuration(GameObject obj, float delay)
{
yield return new WaitForSeconds(delay);
objectPool.Release(obj);
}
}

 

在此示例中,我们创建了一个可以管理GameObject对象池的ObjectPool<GameObject>实例。我们使用了Unity 2019提供的新泛型对象池API:new ObjectPool<T>(Func<T> factoryMethod, int initialCapacity)。在函数中,我们传递了一个工厂方法,用于在添加至池中前实例化一个新对象。

Start()方法中,我们实例化了一个GameObject类型对象池,初始化完成后,我们可以随时使用Get()Release()方法。当需要一个实例时,我们可以使用Get()方法返回一个可用的对象实例并将其设置为已激活状态。当我们使用完对象时,需要将其释放到对象池中,这时我们使用Release()方法来将其放回对象池。

值得一提的是,在Unity中自带的泛型对象池API中,我们并不需要实现对象的创建或销毁等处理。对象池自动处理创建和销毁的逻辑,并通过工厂方法减少复杂的编码需求。

标签:obj,对象,GameObject,用法,Unity,2019,objectPool,5f,ObjectPool
From: https://www.cnblogs.com/bearhb/p/17375531.html

相关文章

  • [2019红帽杯]easyRE 1
    查壳:64位,进IDA找主函数:挺长的,慢慢来吧,先找正确的判断输出:涉及到了v11,又涉及到到方法sub_400E44,跟进方法看看:出现位运算,和aAbcdefghijklmn,跟进看看:标准base64编码,那就是说v11是根据v18base64加密了10次得到的,我们再看看,sub_400360的另一个参数off_6CC090,跟进:拿这个去解密......
  • C++ - VS2019配置pthread线程库
    说明在VS里用MS编译器不能直接调用pthread库,需要先自行下载该库:http://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip解压后用的到的只有Pre-built.2文件夹下的文件。 配置如下图分别配置三大项:包含目录-->...pthreads-w32-2-9-1-release\Pre-built.......
  • [GUET-CTF2019]re 1
    查壳:有个壳,脱一下,upx脱壳方法讲过了,(这里注意,低版本的upx是脱不掉壳的,换高版本哈)可以去:https://www.cnblogs.com/TFOREVERY/p/17366210.html不赘述了:64位进IDA老思想进主函数:对输入flag进行一个方法加密sub_4009AE:跟进:emm。menu优秀:简单的做一个逆运算就好了,这里有一个小坑,......
  • css中filter的部分特别用法
    1. drop-shadow函数如果给png的图片设置阴影通过box-shadow就会变成这样但可以通过fliter来重新实现 会变成这样.header{//box-shadow:10px10px10px#000;filter:drop-shadow(10px10px10pxrgba(0,0,0,.5));}  2.hue-roate函数.header{filter:......
  • C语言中 p三种用法的区别
    请看下面三种定义:constchar*p;charconst*p;char*constp;首先看第一种,我们先看p,本着”从里往外”的原则,p是一个char*类型的变量,但char*前面有一个const修饰,即p所指向的内容为const类型不可修改,我们可以写如下程序进行实验,当试图对p指向的数组的第一个元素进行修改时,......
  • Unity插件之天气系统UniStorm
    1、简介UniStorm-体积云、天空、模块化天气和云阴影1.1描述UniStorm是AAA动态天空、天气、云阴影、大气雾和程序性体积云的终极解决方案。UniStorm为您提供了调整天空中每个组件的选项。UniStorm是一款非常强大的动态昼夜天气系统,能够以极快的帧速率创建AAA级动态生......
  • 弹幕标签(跑马灯)用法(前端开发小技能)
    弹幕标签1、注意弹幕标签marquee,现在一些浏览器是不支持的2、弹幕标签也叫跑马灯marquee格式及其含有的属性1、基本格式<marquee></marquee>2、一些属性1)direction属性:表示的是弹幕行走的方向,如下面实现向左行走<marqueedirection="left">这波操作6</marquee>其中direction还可以......
  • Unity3D之OnTriggerEnter和OnCollisionEnter
    OnCollisionEnter方法要求碰撞的发起方必须拥有刚体,而被碰撞方有没有刚体并不重要;OnTriggerEnter方法则对此没有要求,只需要碰撞双方有一个具有刚体即可触发,当有物体勾选isTrigger属性时,则会执行OnTriggerEnter方法。......
  • Unity之伽马空间与线性空间
    关于伽马空间与线性空间,可参考:https://zhuanlan.zhihu.com/p/432224776https://blog.csdn.net/sinat_34014668/article/details/128604170https://blog.csdn.net/zhjzhjxzhl/article/details/119917984https://zhuanlan.zhihu.com/p/432846112总结如下:1)PS输出的是sRGB贴图(G......
  • 商汤视觉跟踪算法两部曲之SiamMask , CVPR 2019商汤提出了对视觉目标(VOT)和对视频目标(VO
    商汤视觉跟踪算法两部曲之SiamMask,CVPR2019商汤提出了对视觉目标(VOT)和对视频目标(VOS)的统一框架。将跟踪的初始化只需要提供视频跟踪的box输入即可,输出时却能同时得到box和mask两个输出。只需要在Siamese网络中额外增加一个Mask分支即可。本工程提供复现该论文的C++工程代码及......