DOTS学习过程3 动态生成Entity

前言:我为什么来学习的初衷有一点就是为了这个,假如我一次性生成一千个物体你说会卡不卡,如果用了DOTS可想而知(我还没试。嘿嘿)

首先我们创建一个空物体挂载一个创建的脚本

 * Scene----GameObject  首先GameObject是存在Scene场景下的
 * World--Entity  Entity是存在世界坐标下的,两者虽然有不同但是是混合在一起的 

首先调用创建方法我们先测试一下是否创建出来了

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.Entities;
using Unity.Transforms;

public class CreateNewEntity : MonoBehaviour
{
    /*
     * Scene----GameObject  首先GameObject是存在Scene场景下的
     * World--Entity  Entity是存在世界坐标下的,两者虽然有不同但是是混合在一起的 
     * 
     */

    private EntityManager em;

    void Start()
    {
        em = World.DefaultGameObjectInjectionWorld.EntityManager;
        CreatyMyEntity();
    }

    private void CreatyMyEntity()
    {
        em.CreateEntity();
    }

}

现在根据打印输出来看物体是创建出来了,但是只是一个空物体,最右侧面板也没有任何组件 没有任何材质和Mesh,我们现在要做的就是给他先添加上组件试一试

 

添加组件脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.Entities;
using Unity.Transforms;
using Unity.Rendering;

public class CreateNewEntity : MonoBehaviour
{
    /*
     * Scene----GameObject  首先GameObject是存在Scene场景下的
     * World--Entity  Entity是存在世界坐标下的,两者虽然有不同但是是混合在一起的 
     * 
     */

    private EntityManager em;

    [SerializeField]
    private Mesh myMesh;

    [SerializeField]
    private Material myMaterial;

    void Start()
    {
        em = World.DefaultGameObjectInjectionWorld.EntityManager;
        CreatyMyEntity();
    }

    private void CreatyMyEntity()
    {
        //原型
        EntityArchetype ea = em.CreateArchetype(
            typeof(Translation),
            typeof(RenderMesh),
            typeof(RenderBounds),
            typeof(LocalToWorld)
            );

        Entity myEntity = em.CreateEntity(ea);
        em.AddSharedComponentData(myEntity, new RenderMesh
        {
            mesh = myMesh,
            material = myMaterial
        }
        );
    }

}

然后把mesh  和材质挂上   当当当当!!

 

是不是这样就出来了那,人头娃娃

小伙伴们可以生成一千个或者一万个试一试哦!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山竹炒大蒜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值