UNITY ECS не регистрирует новую сущность во время выполнения - PullRequest
0 голосов
/ 11 ноября 2018

Я новичок здесь и надеюсь, что вы решите мою маленькую проблему.

Я решил протестировать новую систему ECS в Unity и столкнулся с такой проблемой:

У меня есть две сущности и одна система, которая контролирует их обоих. Когда я запускаю режим воспроизведения - моя система обнаружила оба объекта, но когда я породил третий объект во время выполнения - система не обновила его.

Моя система:

public class MovementSystem : ComponentSystem
{
    public struct ComponentFilter
    {
        public Transform m_Transform;
        public MoveComponent m_MoveComponent;
    }

    protected override void OnUpdate()
    {
        var entities = GetEntities<ComponentFilter>();
        foreach (var item in entities)
        {
            Debug.Log(item.m_MoveComponent);
        }
    }
}

Мой компонент:

[RequireComponent(typeof(GameObjectEntity))
public class MoveComponent : MonoBehaviour 
{
    //do nothing. may be added to another gameObject by AddComponent 
    //if object doesn't have GameObjectEntity - creates it
    //and then system will not update it.
}

Как я могу зарегистрировать этот новый объект в моей системе? Спасибо за ответы!

1 Ответ

0 голосов
/ 11 ноября 2018

Если я правильно понимаю вопрос, значит, вы не создали новую сущность. Вы можете сделать это в вашей MovementSystem с помощью EntityManager.Instantiate(Entity srcEntity) или в другом месте с помощью World.Active.GetOrCreateManager<EntityManager>().Instantiate(Entity srcEntity).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...