[Unity 강의] 뱀서라이크 강의 - 매니저
카테고리: Class VamSurLike
태그: C#, Unity, VamSurLike
1. Manager
✔ 설계적인 부분을 생각하며 만들자.
✔ 오브젝트 간 연결 - 코드에서 관리
✔ 최상위 매니저(싱글톤) - MonoBehaviour - 다른 매니저를 들고 있는
✔ 하위 매니저 - 일반 클래스로
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Managers : MonoBehaviour
{
static Managers s_instance;
static bool s_init = false;
#region Contents
GameManager _game = new GameManager();
ObjectManager _object = new ObjectManager();
PoolManager _pool = new PoolManager();
public static GameManager Game { get { return instance?._game; } }
public static ObjectManager Object { get { return instance?._object; } }
public static PoolManager Pool { get { return instance?._pool; } }
#endregion
#region Core
DataManager _data = new DataManager();
ResourceManager _resource = new ResourceManager();
SceneManagerEx _scene = new SceneManagerEx();
SoundManager _sound = new SoundManager();
UIManager _ui = new UIManager();
public static DataManager Data { get { return instance?._data; } }
public static ResourceManager Resource { get { return instance?._resource; } }
public static SceneManagerEx Scene { get { return instance?._scene; } }
public static SoundManager Sound { get { return instance?._sound; } }
public static UIManager UI { get { return instance?._ui; } }
#endregion
public static Managers instance
{
get
{
if (s_init ==false)
{
s_init = true;
GameObject go = GameObject.Find("@Managers");
if (go == null)
{
go = new GameObject() { name = "@Managers" };
go.AddComponent<Managers>();
}
DontDestroyOnLoad(go);
s_instance = go.GetComponent<Managers>();
// TODO 초기화 코드
// ex) _instance._game.Inint();
}
return s_instance;
}
}
}
public class GameManager
{
Vector2 _moveDir;
public event Action<Vector2> OnMoveDirChanged;
public Vector2 MoveDir
{
get { return _moveDir; }
set
{
_moveDir = value;
OnMoveDirChanged?.Invoke(_moveDir);
}
}
}
public class ObjectManager
{
}
public class PoolManager
{
}
2. 델리게이트 사용
이것저것 메모
설계
✔ 설계적인 부분을 생각하며 만들자.
✔ 오브젝트 간 연결 - 코드에서 관리
잡담, 일기?
델리게이트 액션 더 공부하기
댓글남기기