TIL_231226

Z_제트·2023년 12월 26일
0

TODAY I LEARNED

목록 보기
41/88
post-thumbnail

to do_오늘 할 일

  • 알고리즘 문제풀기
  • 개인과제 start !

retro_오늘 한 일(회고)

오늘은 본격적으로 개인과제작업을 시작하기 전에
미뤄왔던 델리게이트 공부를 해봤다.
시간이 날 때마다 베이직반 특강을 종종 챙겨봤었는데,
딱 이번에 들어야 할 주차 내용이 델리게이트 관련이라
오늘은 델리게이트 공부할 운명이구나.. 를 제대로 느꼈다.

[NOTE] 싱글톤, 델리게이트, 정보저장

  • 데이터 동기화 를 위해서는

    • 싱글톤 / 델리게이트 / 정보저장(PlayerPrefs, SO, Json(실무에서 제일 많이 쓰임), csv(타일맵그릴때))
  • 싱글톤

    • Instance
    • 딱 하나만 있어야 해 ! 그리고 어디서든 접근 가능해야 해 !
    • 예외 처리 매우 중요 !!
      • e.g. 여러개 있는 경우, 1개는 무조건 있어야 해(= null 이면 안 된다)
      • 어디서든 접근가능하며, 무조건 하나는 있어야 하고, 중복되면 안 된다.
    • static 이 해주는 것은 어디서든 접근이 가능하도록 메모리에 올려보내 주는 것 !
public class GameManager : MonoBehaviour

private static GameManager _instance;
public static GameManager Instance // 나중에 이 부분을 상속받아	오는 형식으로 구현하면 더더욱 좋겠죠 ~?
{
	get
	{
			if (_instance == null)
			{
					GameObject go = new GameObject("GameManager");
					go.AddComponent<GameManager>();
					_instance = go.GetComponent<GameManager>();
					DontDestroyOnLoad(go);
			}
			return _instance;
	}
	set
	{
			if (_instance == null) _instance = value;
	}
}

private void Awake()
{
	if(_instance == null)
	{
			_instance = this;
			DontDestroyOnLoad(this); // 게임Scene 이동할 때 GameManager 파괴되면 안 되니까 ~
	}
	else
	{
			if (_istance != this) Destroy(this);
	}
}
  • 델리게이트

    • delegate 가 Action 이다 ~!

      public event Action action;
    • += 로 구독시켜주기

    • 미리 외부에 있는 함수가 싱글톤 쪽에 구독을 해놓고 특정한 상황일 때 발생시키면 된다.

      public delegate void TestDelegate();
      public TestDelegate characterUpdate;
      
      public Action action;
      // 매개변수가 필요하다면 public Action<int> action; 이런식으로 작성하면 된다.
    • Action 은 반환값이 없다. Func 은 반환값이 있다.

    • 델리게이트를 통해서 함수를 넣어놓고 그걸 한꺼번에 불러줄 수 있다 ~!
      e.g.

      void CharacterUpdate()
      {
      		Character.Manager.Instance.action?.Invoke();
      }
    • 바깥에서 등록해서 내부에서 호출하는 건 event 가 붙는다.
      e.g.

      public event Action action;
      public event Action<int> score;

      아직 Action 과 event Action 차이를 잘 모르게씀 ~

    • 유니티에서 사용할 수 있는 델리게이트의 종류는 다음과 같다.

      public Action action; // // 반환값 x, 매개변수 x
      public Action<int> action2; // 반환값 x, 매개변수 int 하나
      public Func<int, int, bool> func; // 반환값 bool, 매개변수 int 두 개
      public Func<bool> func2; // 반환값 bool, 매개변수 x
    • '데이터 변화'와 '데이터 읽어옴' 사이의 브릿지 역할은 Scriptable Objects ~

    • 델리게이트 개념 정리 : 메서드 넣을 수 있다, 반환값 없으면 Action 있으면 Func .

  • 정보저장

    • PlayerPrefs
    • Scriptable Objects
      • SO 를 통해 한쪽은 데이터 세팅만, 다른 한 쪽은 데이터를 읽어오는 역할을 할 수 있게 된거죠 !
      • SO 는 보안이 취약하다 !
    • Json
      • 데이터를 string 으로 ~

to be continued.. maybe...?


profile
trying to make the world a better place with a cool head and warm heart

0개의 댓글