녹슨 군단 ECS 시스템에서 세계를보고 엔티티를 얻을 수있는 방법이 있습니까?

Dvidbruhm

Specs ECS 를 사용하는 rust 자습서를 따르고 있으며 대신 legion ECS사용하여 구현하려고합니다 . 나는 군단을 사랑하고 문제에 직면 할 때까지 모든 것이 순조롭게 진행되었습니다.

내 질문을 공식화하는 방법을 잘 모르겠습니다. 내가하려는 것은 예를 들어 ComponentA와 ComponentB가있는 모든 엔티티를 반복하는 시스템을 만드는 것입니다.하지만 엔티티에 ComponentC가 있는지 확인하고 그럴 경우 특별한 작업을 수행합니다.

Specs (예제 코드)를 사용하여 그렇게 할 수 있습니다.

// Uses Specs
pub struct SystemA {}

impl<'a> System<'a> for SystemA {
    type SystemData = ( Entities<'a>,
                        WriteStorage<'a, ComponentA>, 
                        ReadStorage<'a, ComponentB>,
                        ReadStorage<'a, ComponentC>);

    fn run(&mut self, data : Self::SystemData) {
        let (entities, mut compA, compB, compC) = data;

        // Finding all entities with ComponentA and ComponentB
        for (ent, compA, compB) in (&entities, &mut compA, &compB).join() {
            // Do stuff with compA and compB

            // Check if Entity also has ComponentC
            let c : Option<&ComponentC> = compC.get(ent);

            if let Some(c) = c {
                // Do something special with entity if it also has ComponentC
            }
        }
    }
}

나는 이것을 legion (현재 최신 0.4.0 버전 사용) 사용으로 번역하는 데 어려움을 겪습니다. 현재 엔터티에있는 다른 구성 요소를 가져 오는 방법을 모르겠습니다. 내가 가진 코드는 다음과 같습니다.

#[system(for_each)]
pub fn systemA(entity: &Entity, compA: &mut compA, compB: &mut ComponentB) {
    // Do stuff with compA and compB

    // How do I check if entity has compC here?

}

위 시스템의 엔티티에는 ID 만 포함되어 있습니다. World없이이 엔터티가 가지고있는 구성 요소 목록에 어떻게 액세스합니까? 아니면 군단의 시스템에서 세계에 접근 할 수있는 방법이 있습니까? 아니면 사양 버전과 동일한 결과를 얻을 수있는 다른 방법이 있습니까?

감사!

jongguk.jo

옵션 구성 요소에 옵션 <...>을 사용할 수 있습니다 .

#[system(for_each)]
pub fn systemA(entity: &Entity, compA: &mut compA, compB: &mut ComponentB, compC: Option<&ComponentC>) {
    ...
    if let Some(compC) = compC {
        // this entity has compC
        ...

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

녹슨 군단 ECS 시스템에서 세계를보고 엔티티를 얻을 수있는 방법이 있습니까?

분류에서Dev

참조 엔터티를 업데이트 한 후 다른 엔터티에서 열을 업데이트 할 수있는 방법이 있습니까?

분류에서Dev

이 블록에서 정보를 얻을 수있는 방법이 있습니까?

분류에서Dev

삭제 후에도 엔티티를 찾을 수 있습니다.

분류에서Dev

Google 앱 엔진-Python에서 해당 엔티티에 대한 ID가있는 단일 엔티티를 삭제하는 방법

분류에서Dev

JPA의 엔티티 하위 클래스에서 ID를 재정의하는 방법이 있습니까?

분류에서Dev

스레드 로컬 시스템에서 World를 직접 사용하지 않고 엔티티에 자식을 추가 할 수 있습니까?

분류에서Dev

누구든지 Jtextfield에서 시스템 날짜를 얻는 방법을 알려줄 수 있습니까?

분류에서Dev

특정 범위의 단어를 얻을 수있는 방법이 있습니까?

분류에서Dev

이 보고서 열에서 SUM 대신 차이를 얻을 수있는 방법이 있습니까?

분류에서Dev

경험이 풍부한 누군가가 내 bash 스크립트를 살펴보고 더 간단하게 만드는 방법에 대한 조언을 얻을 수 있습니까?

분류에서Dev

기존 엔터티에 대한 새 구독 평가를 피할 수있는 방법이 있습니까?

분류에서Dev

데이터를 업로드 한 후 엔티티는 어디에 있습니까?

분류에서Dev

엔티티 생성기를 사용하여 사용자 기본 엔티티와 단방향 일대일 관계를 생성 할 수 있습니까?

분류에서Dev

ESLint에서보고 된 고유 오류를 얻을 수있는 방법이 있습니까?

분류에서Dev

ElasticSearch-엔티티 이름 패턴으로 엔티티를 일치시키는 템플릿을 만드시겠습니까?

분류에서Dev

조건이있는 다른 엔티티에서 결과를 얻으려면 어떻게해야합니까?

분류에서Dev

ICRF로 표시되도록 Cesium 엔티티를 구성하는 방법이 있습니까?

분류에서Dev

2 개의 하위 엔티티를 기준으로 그룹화하고이 두 하위 엔티티의 합계를 얻는 방법은 무엇입니까?

분류에서Dev

GCM 실패에 대한 자세한 정보를 얻을 수있는 방법이 있습니까?

분류에서Dev

libgdx ashley ecs 프레임 워크 풀 엔진에서 엔티티를 생성하는 적절한 방법은 무엇입니까?

분류에서Dev

JPA에서 속성 값이있는 모든 유형과 속성 값이있는 ManyTomany 관련 엔터티를 어떻게 찾을 수 있습니까?

분류에서Dev

JPA에서 속성 값이있는 모든 유형과 속성 값이있는 ManyTomany 관련 엔터티를 어떻게 찾을 수 있습니까?

분류에서Dev

Symfony 엔티티를 생성하고 다른 엔티티에 추가하는 방법은 무엇입니까?

분류에서Dev

마스터 데이터 서비스에서 개별 엔터티를 한 서버에서 다른 서버로 이동할 수있는 방법이 있습니까?

분류에서Dev

관계 엔티티에서 간단한 가져 오기를 만드는 방법은 무엇입니까? 빠른

분류에서Dev

다양한 색상에서 고유 한 해시 코드를 얻을 수있는 방법이 있습니까?

분류에서Dev

Symfony4 교리 단위 테스트 : 엔티티가 캐시에 오래된 데이터를 가지고 있습니까?

분류에서Dev

자바 클래스 엔티티 확장> 엔티티의 인스턴스를 얻는 방법

Related 관련 기사

  1. 1

    녹슨 군단 ECS 시스템에서 세계를보고 엔티티를 얻을 수있는 방법이 있습니까?

  2. 2

    참조 엔터티를 업데이트 한 후 다른 엔터티에서 열을 업데이트 할 수있는 방법이 있습니까?

  3. 3

    이 블록에서 정보를 얻을 수있는 방법이 있습니까?

  4. 4

    삭제 후에도 엔티티를 찾을 수 있습니다.

  5. 5

    Google 앱 엔진-Python에서 해당 엔티티에 대한 ID가있는 단일 엔티티를 삭제하는 방법

  6. 6

    JPA의 엔티티 하위 클래스에서 ID를 재정의하는 방법이 있습니까?

  7. 7

    스레드 로컬 시스템에서 World를 직접 사용하지 않고 엔티티에 자식을 추가 할 수 있습니까?

  8. 8

    누구든지 Jtextfield에서 시스템 날짜를 얻는 방법을 알려줄 수 있습니까?

  9. 9

    특정 범위의 단어를 얻을 수있는 방법이 있습니까?

  10. 10

    이 보고서 열에서 SUM 대신 차이를 얻을 수있는 방법이 있습니까?

  11. 11

    경험이 풍부한 누군가가 내 bash 스크립트를 살펴보고 더 간단하게 만드는 방법에 대한 조언을 얻을 수 있습니까?

  12. 12

    기존 엔터티에 대한 새 구독 평가를 피할 수있는 방법이 있습니까?

  13. 13

    데이터를 업로드 한 후 엔티티는 어디에 있습니까?

  14. 14

    엔티티 생성기를 사용하여 사용자 기본 엔티티와 단방향 일대일 관계를 생성 할 수 있습니까?

  15. 15

    ESLint에서보고 된 고유 오류를 얻을 수있는 방법이 있습니까?

  16. 16

    ElasticSearch-엔티티 이름 패턴으로 엔티티를 일치시키는 템플릿을 만드시겠습니까?

  17. 17

    조건이있는 다른 엔티티에서 결과를 얻으려면 어떻게해야합니까?

  18. 18

    ICRF로 표시되도록 Cesium 엔티티를 구성하는 방법이 있습니까?

  19. 19

    2 개의 하위 엔티티를 기준으로 그룹화하고이 두 하위 엔티티의 합계를 얻는 방법은 무엇입니까?

  20. 20

    GCM 실패에 대한 자세한 정보를 얻을 수있는 방법이 있습니까?

  21. 21

    libgdx ashley ecs 프레임 워크 풀 엔진에서 엔티티를 생성하는 적절한 방법은 무엇입니까?

  22. 22

    JPA에서 속성 값이있는 모든 유형과 속성 값이있는 ManyTomany 관련 엔터티를 어떻게 찾을 수 있습니까?

  23. 23

    JPA에서 속성 값이있는 모든 유형과 속성 값이있는 ManyTomany 관련 엔터티를 어떻게 찾을 수 있습니까?

  24. 24

    Symfony 엔티티를 생성하고 다른 엔티티에 추가하는 방법은 무엇입니까?

  25. 25

    마스터 데이터 서비스에서 개별 엔터티를 한 서버에서 다른 서버로 이동할 수있는 방법이 있습니까?

  26. 26

    관계 엔티티에서 간단한 가져 오기를 만드는 방법은 무엇입니까? 빠른

  27. 27

    다양한 색상에서 고유 한 해시 코드를 얻을 수있는 방법이 있습니까?

  28. 28

    Symfony4 교리 단위 테스트 : 엔티티가 캐시에 오래된 데이터를 가지고 있습니까?

  29. 29

    자바 클래스 엔티티 확장> 엔티티의 인스턴스를 얻는 방법

뜨겁다태그

보관