一.介绍
场景中一切可能会重复添加的GameObject都可以使用Entity类来实现
1.实体类
创建一个类继承Entity,Entity继承了一些列的虚函数,下面三个是需要重写的函数。实体管理器在分配和回收实体的时候,只在逻辑上处理,回收实体后实体的OnUpate将不在执行,但并不会在场景中隐藏对应的GameObject。实体的显示效果需要在子类的OnAllocate和OnRecycle中自行编写。
/// <summary>
/// 初始化
/// </summary>
public virtual void OnInit() { }
/// <summary>
/// 被分配
/// </summary>
public virtual void OnAllocate(EntityData entityData) { }
/// <summary>
/// 被回收
/// </summary>
public virtual void OnRecycle() { }
/// <summary>
/// 轮询
/// </summary>
public virtual void OnUpdate(float elapseSeconds, float realElapseSeconds) { }
二.使用方式
以下方法都在EntityManager中
1.配置实体模板
要使用实体管理器创建实体首先要配置模板,预制体上不需要添加继承自Entity的脚本,实体管理器在创建实体的时候会自动添加。
/// <summary>
/// 设置模板
/// </summary>
/// <param name="key">key</param>
/// <param name="type">类型</param>
/// <param name="template">模板</param>
public void AddTemplate(string key, System.Type type, GameObject template)
2.创建实体
实体的创建有几个重载,可以按需使用,此方法调用之后系统就会在相应位置创建一个实体对象
/// <summary>
/// 分配实体
/// </summary>
/// <param name="key">键值</param>
/// <param name="id">实体Id</param>
/// <param name="entityData">实体信息</param>
/// <param name="pos">位置</param>
/// <param name="quaternion">角度</param>
/// <returns></returns>
public Entity Allocate(int id, string key, EntityData entityData, Vector3 pos, Quaternion quaternion)
3.回收实体
使用实体管理器创建的实体不要自己用Destory删除,应使用系统的回收函数。
/// <summary>
/// 回收实体
/// </summary>
/// <param name="entity">目标实体</param>
public bool Recycle(Entity entity)