马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
组件继承于IBufferElementData,可以让一个实体拥有多个雷同的组件。
- using Unity.Entities;
- public struct MyBuffComponentData : IBufferElementData
- {
- public int num;
- }
复制代码- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using Unity.Entities;
- public class BuffComponentConvert : MonoBehaviour, IConvertGameObjectToEntity
- {
- public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
- {
- DynamicBuffer<MyBuffComponentData> bufferList = dstManager.AddBuffer<MyBuffComponentData>(entity);
- bufferList.Add(new MyBuffComponentData() { num = 1 });
- bufferList.Add(new MyBuffComponentData() { num = 2 });
- }
- }
复制代码 使用AddBuffer<组件类>(entity)添加缓存区组件,返回的是一个动态缓存区对象<组件类>
然后逐个创建和添加到动态缓存区对象里去就完成了对实体添加多个雷同组件。
继承于Monobeahviour.cs脚本直接Start方法实行如下代码:
正常通过query的方式查询获取组件的实体数组,我们只有1个所以直接取array[0]实体对象,
使用EntityManager对象GetBuffer<组件类>(array[0])获取动态缓存区对象,它是一个列表,可以分别对它举行索引获取值输出,插入,遍历等操纵。
- //(7)缓存区组件
- EntityManager entityManager = World.DefaultGameObjectInjectionWorld.EntityManager;
- EntityQuery query = entityManager.CreateEntityQuery(typeof(MyBuffComponentData));
- NativeArray<Entity> array = query.ToEntityArray(Allocator.TempJob);
- DynamicBuffer<MyBuffComponentData> bufferList = entityManager.GetBuffer<MyBuffComponentData>(array[0]);
- Debug.Log(bufferList[0].num);
- //末尾插入
- bufferList.Insert(bufferList.Length, new MyBuffComponentData() { num = 3 });
- Debug.Log(bufferList[2].num);
- //首部插入
- bufferList.Insert(0, new MyBuffComponentData() { num = 4 });
- //遍历组件
- foreach (var v in bufferList)
- {
- Debug.Log(v.num);
- }
- //销毁查询对象和数组
- query.Dispose();
- array.Dispose();
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |