강의 23,24,25,26강 수강
#1
강의 수강: Unity Turn-Based Strategy Game: Intermediate C# Coding
23. Unit Selected Visual, Events (10:44)
선택된 유닛을 강조하기 위한 별도의 3D 오브젝트 SelectedVisual 를 만들어 Unit Prefab 에 부착.
해당 오브젝트에는 SelectedUnitVisual 이라는 이름의 스크립트 부착.
SelectedUnitVisual 스크립트는 현재 Unit 이 선택된 Unit 인지 아닌지에 따라 SelectedUnit 오브젝트를 보이게/안보이게 함.
Observer Pattern 으로 selectedUnit 이 바뀔 때마다 이벤트 발송.
public event EventHandler OnSelectedUnitChanged;
private void SetSelectedUnit(Unit unit)
{
seleectedUnit = unit;
OnSelectedUnitChanged?.Invoke(this, EventArgs.Empty);
}
public Unit GetSelectedUnit()
{
return seleectedUnit;
}
관련해서 설명을 많이 해줬는데 이 강의가 유난히 말이 빠르고 발음이 구분이 잘 안 되어서, 코드로 보이는 것 이상은 잘 이해 못한 것 같다. 그나마 다행인 건 관련해서 이후 강의에서 코드를 개선할 예정이라고 하니, 그 때 다시 설명을 듣고 자세히 이해하는 것으로 하자.
Unit Prefab 내부에 있는 SelectedUnitVisual 스크립트는 Prefab 외부에 있는 (= 씬에 있는) 객체의 레퍼런스를 알 수 없다. 따라서 이벤트를 수신할 수 없는 상황인데, 이건 다음 강의에서 Singletone Pattern 을 사용해서 해결한다.
24. Unit Selected Visual, Singleton (09:10)
강의에 나온 Singletone Pattern 코드는 익히 알려진 것과 크게 다르지 않았음.
Awake() 가 Start() 보다 항상 먼저 실행됨. 따라서 내부 초기화는 Awake() 에서, 외부와 연결된 초기화는 Start() 에서 하면 좋다.
private void Start()
{
UnitActionSystem.Instance.OnSelectedUnitChanged += UnitActionSystem_OnSelctedUnitChanged;
UpdateVisual();
}
private void UnitActionSystem_OnSelctedUnitChanged(object sender, EventArgs empty)
{
UpdateVisual();
}
private void UpdateVisual() {
Unit selcectedUnit = UnitActionSystem.Instance.GetSelectedUnit();
if(unit == selcectedUnit)
{
meshRenderer.enabled = true;
} else
{
meshRenderer.enabled = false;
}
}
25. Intro - Grid System and Camera (00:52)
Grid 시스템과 카메라 조작을 구현하는 섹션으로 넘어가봅시다.
26. Grid System Design (03:54)
Grid 시스템 설계 개요.
#2
Unit 를 위한 .gitignore https://github.com/github/gitignore/blob/main/Unity.gitignore