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() 을 사용해 코루틴이 확실히 끝난 후 사용한다.

사용은 람다식으로 한다.

+ Recent posts