unity自己对象池的使用

unity出了自己的对象池 这里记录一下用法

  • 命名空间就是这个
    在这里插入图片描述

  • 一般有两种用法,第一种是在using里面获取,脱离这个域就释放。第二种是在Get和Release配合使用

 // This version will only be returned to the pool if we call Release on it.
 //只有使用Release才会释放
        var simplifiedPoints = ListPool<Vector2>.Get();
//这种只要脱离了Scope就会自动释放
        // Copy the points into a temp list so we can pass them into the Simplify method
        // When the pooled object leaves the scope it will be Disposed and returned to the pool automatically.
        // This version is ideal for working with temporary lists.
        using (var pooledObject = ListPool<Vector2>.Get(out List<Vector2> tempList))
        {
    
    
            for (int i = 0; i < points.Length; ++i)
            {
    
    
                tempList.Add(points[i]);
            }

            LineUtility.Simplify(tempList, 1.5f, simplifiedPoints);
        }
        return simplifiedPoints;
  • 一般比较常用的就几个集合类和下面这个,可以对自己的类进行一个池子回收。
using UnityEngine.Pool;

public class GenericPoolExample
{
    
    
    class MyClass
    {
    
    
        public int someValue;
        public string someString;
    }

    void GetPooled()
    {
    
    
        // Get an instance
        var instance = GenericPool<MyClass>.Get();

        // Return the instance
        GenericPool<MyClass>.Release(instance);
    }
}
  • 对于一些unity中的GameObject对象可以使用ObjectPool

猜你喜欢

转载自blog.csdn.net/qq_33574890/article/details/133224157