Unity 게임 프레임워크 구축 (3) MonoBehaviour 단일 템플릿
1663 단어 Unity 아키텍처
어떻게 설계합니까?
먼저 수요를 분석한다.스크립트 실례 대상의 개수를 제약합니다. 2.GameObject의 개수를 제한합니다. 3.MonoBehaviour 라이프 사이클을 수신합니다. 4.단일 인스턴스와 해당 GameObject를 제거합니다. 먼저, 첫 번째는 스크립트의 실례 대상의 개수를 제약하는 것이다. 이것은 전편에서 이미 실현되었다.그러나 두 번째는 게임Object의 개수를 제약하는 것이다. 이 수요는 아직 생각이 없다. 게임이 실행될 때 몇 개의 게임Object가 이미 이 스크립트를 걸었는지 판단하고 개수가 1보다 많으면 오류를 던지면 된다.
세 번째 점은 MonoBehaviour를 계승하여 실현하고 해당하는 리셋 방법을 복기하면 된다.네 번째, 스크립트를 삭제할 때 정적 실례를 비웁니다.전체 코드는 다음과 같습니다.
using UnityEngine;
namespace QFramework
{
public abstract class QMonoSingleton:MonoBehaviour where T :QMonoSingleton
{
protected static T instance = null;
public static T InStance()
{
if(instance ==null )
{
instance = FindObjectOfType();
if(FindObjectsOfType ().Length >1)
{
return instance;
}
if(instance ==null )
{
string instanceName = typeof(T).Name;
GameObject instanceGO = GameObject.Find(instanceName);
if(instanceGO ==null )
{
instanceGO = new GameObject(instanceName);
}
instance = instanceGO.AddComponent();
DontDestroyOnLoad(instanceGO);
}
else
{
//
}
}
return instance;
}
protected virtual void OnDestroy()
{
instance = null;
}
}
}
클릭 링크 열기