1. Layout Group 갱신
버튼들의 그룹 등에서 일렬로 정렬할 경우 간편하고 깔끔하게 Content Size Fitter 컴포넌트와 Horizontal Layout Group 컴포넌트를 사용하는데 게임 진행 중 버튼이 바뀌거나 글자의 변경으로 인해 사이즈가 변경되었을때 즉각즉각 Horizontal Layout Group가 일을 하지않아 (뭔가 한탬포 늦게 반응) 강제로 갱신하는 방법을 찾아보았다. 정답은 LayoutRebuilder.ForceRebuildLayoutImmediate(RectTransform)
컨텐츠의 변경후 저 함수를 호출하게되면 즉각즉각 변경된 컨텐츠에 따라 깔끔하게 정렬하게 된다.
ps. 생각해보니 TextMeshPro의 Sprite Asset을 사용해도 쉽게 해결될 것 같다...
2. 코루틴으로 계산 결과 반환 받기
1 2 3 4 5 6 7 8 | IEnumerator RequestValue(System.Action<int> callback) { int value = 0; for (int i =0; i< 5;i++) { i++; yield return null; } callback(value); } | cs |
1 2 3 4 5 | private IEnumerator Start() { int value = 0; yield return RequestValue(data => value = data); Debug.Log(value); } | cs |
코루틴 반환값의 자료형이 IEnumerator로 고정이라 어떻게 값을 return 받아 사용할 수 있을 까 찾아보던 중 좋은글을 발견하였다.
바로 callback함수로 구현하는것이다. 하지만 코루틴은 비동기 처럼 작동하므로 사용할 때 주의가 필요하다.
-> 플래그를 사용하여 계산의 유무를 판단한다.
-> yield return StartCoroutine() 을 사용해 코루틴이 확실히 끝난 후 사용한다.
사용은 람다식으로 한다.
'유니티[Unity]' 카테고리의 다른 글
TextMeshProUGUI의 마테리얼 변경 (0) | 2019.02.01 |
---|---|
게임 디자인 패턴이란 (0) | 2019.01.15 |
[비주얼 스튜디오] 모든 참조 찾기 단축키 (1) | 2019.01.13 |
AssetDatabase갱신시점 (0) | 2018.12.20 |
transform변경은 생각보다 무겁다 (1) | 2018.12.14 |