go1.GetComponent<Button>().onClick.AddListener(delegate { pocusCharacter("TEMP"); });
아주 간단하게 작성된 코드다
왜 이런걸 쓰냐?
버튼 이벤트 하나당 하나의 클래스를 생성하여 여러개를 만들순 없으니까
하나의 클래스에 여러가지 함수를 작성하고 일종의 MVC 구조를 생성해서 콘트롤러 역할을 해줄수 있음
수동으로 이어줘도 되지만 협업시 증거나 관련 히스토리, 주석이 남지 않으므로 되도록이면 코드로 작성한다.
상기에 작성된 코드는 파라미터 값이 상수값으로 하드코딩 되어 있지만
실제 코드에서는 변수를 넣어줘야 하니 그대로 사용하지 말고 수정해야 한다.
1. 싱글턴 클래스 등 전역변수로 미리 값이 설정되거나 로드된 경우라면 단순히 가져와도 상관이 없음
2. 하지만 예를 들어 상점 거래 같은 버튼이 있다고 친다면, 캐릭터의 잔액 변수, 현재 창이 위치한 물품가격의 변수등을 입력 해줘야 함.
3. JSP 페이지에서 JSTL 같은 걸로 하면 좀 쉽게 할수 있지만 이 유니티 방식의 경우 ASP.NET과 비슷한 방식이라서 나의 경우엔 UI는 1페이지 1클래스 정도로 나눠서 처리할 계획이다.
//1. 형식정의
delegate void functionName (String param);
//2 함수 생성
void tempFunction(String param)
//3. 변수선언 , 팁으로 변수 선언시 델리게이트인 경우 접두사를 붙여주는게 좋다.
functionName delegateFunc= new functionName (tempFunction);
//4. 사용
delegateFunc("TEMP");
이렇게 사용할때는 이벤트 형식이 바뀌는 경우에 사용하기 좋다.
보통 하나의 버튼에 한가지의 이벤트를 넣고 싶지만 이벤트 버튼을 하나로 두고 여러가지 이벤트를 동적으로 사용하고 싶을때 사용하면 된다.
'PROGRAMMING > UNITY3D' 카테고리의 다른 글
| 유니티 깃허브 연동 (0) | 2020.06.30 |
|---|---|
| 유니티 폭발력 (0) | 2018.10.16 |