123
包含两个不继承MonoBehaviour
的类
ItemData类
, 用于记录编号为itemID的物体的详细信息. 包括物体名字, 物体描述, 物体预制体等. 在名为ItemDataList_SO
的Scriptable Object
中填写信息.
MapItem类
, 用于记录场景中的物体信息. 包括物体ID, 物体位置.
挂载在场景中所有物体预制体的基类预制体ItemBase
上. 负责单个物体的初始化, 物体的拾起等.
单例模式, 调用时需要用ItemGlobalManager.Instance
的写法.
可以在场景中生成物体, 负责场景中物体的初始化, 还能根据物体ID返回物体详细信息.
挂载在NetworkObjectPool
空物体下. 需要在场景中生成的预制体记得在此添加. 添加的预制体需要有NetworkObject
组件.
包含ItemController
脚本, ItemGlobalManager
在对其初始化时, 会根据itemID
给它分配对象池中的一个预制体作为子物体. 例如, 如果itemID = 1001
, 在ItemDataList_SO
中对应的itemPrefab
是一个ItemCube
, 那么就从对象池中取一个ItemCube
(一定也是NetworkObject
)作为ItemBase
的子物体.
如果要销毁ItemBase
, 要先销毁ItemBase
下的子物体, 让子物体先返回对象池.
挂载在Player下, 负责碰撞检测. 如果碰撞发生, 调用ItemController
中的PickUpItem
方法, 得到itemData
详细信息.