2014-10-24 1 views
1

제목대로 필자는 본질적으로 Prefab을 MonoBehaviour를 구현하지 않는 스크립트와 연관시키는 방법을 찾고 있습니다. 유니티 에디터에서, 나는 프리 팹을 드래그하여 스크립트에 직접 드롭 할 수 있습니다.하지만 MonoBehaviour를 삭제하자마자 나는 옵션을 가지고 있지 않습니다. MonoBehaviour를 제거해야합니다. 왜냐하면 저는 "관리자"에게 전달할 수있는 클래스의 인스턴스를 생성하기 때문입니다.런타임 전에 MonoBehaviour를 구현하지 않는 스크립트로 프리 팹을 어떻게 참조합니까?

런타임시 코드를 통해 스크립트를 통해 프리 팹을 참조하는 사람들의 사례를 많이 보았습니다.하지만 그 특정 변수와 연관되어있는 프리 팹을 변경하지 않으므로 불필요한 것으로 보입니다. prefab 객체는 코드가 실제로 실행되기 전에 준비됩니다. 나는 Resources.Load()를 내 대답으로 기대고있다. 그러나 이것이 이상적인 일인지 확신 할 수 없다.

런타임 전에 Prefab을 지정하는 트릭이 있습니까, 아니면 GameObject 변수를 Unity Editor의 "끌어서 놓기"연결 방법과 유사한 방식으로 Prefab에 연결하는 가장 효율적인 방법은 무엇입니까?

+0

나는 전 세계 프리 팹의 목록을 구축 제안 후 [여기] (http://prof.johnpile.com/2014/07/20/globalprefabs/)에 걸쳐 왔어요 게임 코드를 실행하는 것. 이것은 기본적으로 _playable_ 게임 시간 동안 모든 프리 팹을로드하는 번거 로움을 없애므로, 나에게 도움이 될 것입니다.하지만 런타임 전에 프리 팹을 연관시키는 방식으로 참조 작업을 수행 할 수 있는지 여부는 여전히 관심이 있습니다. – Kyton

답변

2

보통 C# 클래스는 GameObject 또는 프리 팹을 가리킬 수 있습니다.

using UnityEngine; 

public class NotMonoBehaviour 
{ 
    private GameObject gObject; 

    public NotMonoBehaviour() 
    { 
     gObject = Resources.Load("MyPrefab") as GameObject; 
    } 
} 

이 경우 코드는 Resources 폴더로 전환되고 프리 팹을 찾습니다.

내 검색에서

enter image description here

+1

이것은 분명히 작동 할 것이고, 나는 조립식 관리자를 만들기로 선택했으나 non-mono 클래스에서 단지 몇 가지 프리 팹을 필요로하는 사람들에게는 이것이 최고의 솔루션이라고 할 수 있습니다. – Kyton

관련 문제