>

단독이 아닌 클래스 내에서 단일 동작 개체 목록을 초기화하는 데 문제가 있습니다. 이것이 불가능한 일인지 아니면 내 문제가 다른 곳인지 궁금합니다. 감사합니다.


  • 답변 # 1

    MonoBehaviour에 대해 명시적인 생성자를 사용할 수 없습니다. 나는 e.

    myMono= new MyMonoClass() ; // will not work
    
    

    대신 Unity의 컴포넌트 시스템이 모든 모노를 인식 할 필요가있는 AddComponent를 통해 유니티에게 유니티를 생성하도록 요청하십시오. 언제든지 만들 수 있다면 변형이없고 콜백이 없으며 콜백이 없습니다. 업데이트하면 코 루틴이 작동하지 않습니다.

    하나의 오브젝트에, 여러 오브젝트에, 모두 게임 오브젝트를 먼저 스폰해야 할 수도 있습니다. 다행히도 일반적인 방식으로 오브젝트를 생성 할 수 있으므로 다음과 같이 할 수 있습니다

    myMonoList.Add(new GameObject().AddComponent<MyMonoClass>());
    
    

    기존 객체를 복사 (즉시) 할 수도 있습니다

  • 답변 # 2

    @Galandil이 언급했듯이 시도 코드가 없거나 적어도 더 나은 설명이 없으면 해결책을 찾기가 어렵습니다.

    자세한 내용이 부족합니다. 예, MonoBehaviour에서 상속하지 않은 C # 클래스에서 MonoBehaviours 목록을 초기화 할 수 있습니다.

    using UnityEngine; // It is imperative to include this namespace if you don't want to use dot notation.
    using System.Collections.Generic;
    /// If you give this attribute to a class, the Editor will try to serialize it on the inspector.
    //But for that, it should be an attribute from either a MonoBehaviour or a ScriptableObject.
    [System.Serializable]
    public class Holder
    {
        private List<MonoBehaviour> _monos;
        public List<MonoBehaviour> monos
        {
            get
            {
                if(_monos != null) _monos = new List<MonoBehaviour>();
                return _monos;
            }
        }
    }
    
    

    그러나 더 자세한 설명은 정당화와 같이 왜 GameObject 엔티티에서 참조되지 않는 한 지속적이지 않을 클래스에 MonoBehaviours 목록이 있는가? 예를 들어 ScriptableObject를 사용하지 않는 이유는 무엇입니까? 위에서 언급 한 목록을 가진 MonoBehaviour 스크립트로 Empty GameObject 엔티티를 고수하지 않겠습니까?

  • 이전 c# - 통일 할 때 경험하는 드래그를 어떻게 줄이나요?
  • 다음 weblogic12c - Weblogic 서버의 Oracle Ords 1174