오류
Button의 OnClick 메소드를 스크립트 상에서 설정해주려고 한다.
이때 파라미터가 추가되면
1 인수: 'void'에서 'UnityEngine.Events.UnityAction'(으)로 변환할 수 없습니다.
야생의 오류가 등장한다!
해결
해결 방법은 간단하다.
// AddListener로 스크립트상 함수를 쓰고자 하는 Class
public void InitializeRecipe(RecipeSO recipe) {
button.onClick.AddListener(() => OnClickRecipeOn(recipe));
}
// 파라미터가 있는 함수
public void OnClickRecipeOn(RecipeSO recipe) {
// 함수 내용
}
위와 같이 람다식을 쓰면 해결 가능!
람다식이란?
익명 함수를 만들 수 있는 식이다.
(익명 함수 : 함수 이름을 쓰지 않고도 쓸 수 있는 함수)
// 람다식 형식 : (input-parameters) => expression
// 파라미터로 받은 숫자를 제곱한다.
Example_1() {
Func<int, int> square = x => x * x;
Console.WriteLine(square(5));
// Output: 25
}
// 람다식 매개변수 사용
Example_2-1() { // 매개변수 0개
Action line = () => Console.WriteLine();
}
Example_2-2() { // 매개변수 1개 (-> 괄호는 선택사항)
Func<double, double> cube = x => x * x * x;
}
Example_2-2() { // 매개변수 2개 (쉼표로 구분)
Func<int, int, bool> testForEquality = (x, y) => x == y;
}
Example_2-1() 을 보면 알 수 있듯
매개변수가 없는 식은
() => {함수}
와 같이 표현한다.
즉, Button.onclick.AddListener() 는 UnityAction으로
파라미터를 전달할 수 없기에
람다식을 사용해 파라미터가 없는 척(?) 해주면 된다.
람다식을 분명히 써본 적은 있는데
막상 써보려고 하면 익숙치 않아 머뭇거리게 된다 ^^;
일케 정리해놨으니 담엔 더 알차게 응용해봐야겠다!
개발 현황
- Database 생성 -> Main Header 데이터 유지 => 완료!
이제 Main 씬의 데이터가 유지됩니다 ㅎㅎ
요렇게 JSON 형태로 저장 중!
차차 다른 데이터들도 작업할 예정입니다.
- 도감 제작 => ING
학습 문제 풀이 -> 레시피 도감 해금
위의 시스템을 기획했기 때문에
도감을 열심히 만들고 있습니다!
어떻게 해야 많은 양의 레시피를
좀 더 효율적으로 불러올 수 있을까?
에 대해 고민 중인데...

고민만 늘어갑니다 ^_ㅜ...
벌써 7월이네요.
어떻게.
벌써.
반년이 ?.

ㅋㅋ ㅜ 시간이 너무 빨라요~!
날이 많이.
너무 많이!!
더워졌으니 다들 더위 조심하세요~!
오늘도 개발 화이팅입니다!!
'Log' 카테고리의 다른 글
#10 개발자들이 가장 공포를 느낀다는 빌드 테스트 훈련. 저도 한 번 해보았습니다. [Unity 개발일지] (0) | 2023.07.08 |
---|---|
#09 새로 알게된 API 모음 그리고 도감 개발 [Unity 개발일지] (0) | 2023.07.05 |
#07 다중상속 오류(CS1721:cannot have multiple base classes) [Unity 개발일지] (0) | 2023.06.29 |
#06 SetActive(false) 오브젝트 찾기 [Unity 개발일지] (0) | 2023.06.20 |
#05 유니티ㅇㅔ게 지지않기... (0) | 2023.06.19 |