2021. 12. 8. 15:43ㆍ유니티 & C# 공부
1. 스레드 함수(SendMessage 등)
스레드 함수 SendMessage
SendMessage("YouWin",SendMessageOptions.DontRequireReceiver);
"함수명", 을 타 스크립트 안에 가져와서 실행해줘, 근데 없으면 무시하고, 있으면 실행해줘
"함수명"은 public 안 붙어 있어도 가져와서 실행 가능하다!
1) SendMessgae와 Delegate 차이
Delegate함수가 내부적으로 처리하고, 속도가 좀 더 빠르다고 함
관련 출처 http://1st.gamecodi.com/board/zboard.php?id=GAMECODI_Talkdev&no=2070
2) 스레드 함수 (SendMessage함수)
관련 출처 https://flowerexcel.tistory.com/11
2. 람다 함수와 대리자(Delegate, Action<> 등)
람다 함수 (매개변수, 예 int...) =>{이름없이 즉석 생성된 함수}
- Delegate나 Action 이벤트 함수와 같이 사용가능하며, 실시간으로 즉석 함수를 실행해서 코드간결화
대리자 Delegate<변수타입> , Fun<>
메서드를 대신 호출, 콜백CallBack 메서드를 정의할 수 있다
사용되는 델리게이트 타입을 미리 정해야 함.
(이를 극복 위해 C#에서는 모든 타입 형태로 미리 정의된 델리게이트인 Action,Fun를 제공)
delegate int 이름Ex1 (int a, int b) 먼저 선언 해주고
이름Ex1 오브젝트명 생성 후
start 함수 등에 delegate 오브젝트명에 함수 연결 해주는 식으로 사용
예시는 아래 사이트들 확인 참고
Delegate와 Action,Fun<>의 차이점 설명 나오는 사이트
https://m.blog.naver.com/hana100494/221577502489
Action<변수타입> , Fun<> 별도의 Delegate선언 없이 한 줄 표현 가능함
사용 전 using.system 입력 필요함 , C# 자체에서 제공함
Action은 파라미터 값 받을 수 있으며(없을수도 있음) 리턴값x,
Fun은 리턴 return도 무조건 있어야 한다 함
https://nomad-programmer.tistory.com/196
람다함수와 Action 혼합된 것을 보자.
(개인정보를 php MySQL에 저장 후 로그인 할 때 사용하는 부분 일부임)
예) Action<string> _creatItemsCallback; 으로 Action<타입> 먼저 선언 후
start함수 등 안에 * ()=>{}자체가 람다함수임
_creatItemsCallback= (jsonArrayString) => {
StartCoroutine(CreatItemsRoutine(jsonArrayString)); 이렇게 변수로 사용하거나
StartCoroutine(Main.instance.web.GetItemsIDs(userId,_creatItemsCallback)); 로
함수의 매개변수로도 넣을 수 있는데,
이 때 GetItemsIDs라는 함수의 Action 매개변수 정보를 받아서 사용함.
public IEnumerator GetItemsIDs(string userID,System.Action<string>callback)
{ // 유저 아이디에 따른 아이템 번호를 UnityWebRequest 함수 및 개인 데이터관리(PHP MySQL이용)
Simpe제이슨 값으로 받아낸다.
yield return www.Send(); //어느시점에서 서버의 응답을 기다려야 하므로 코루틴 사용
// 한 프레임에서 모두 완료할 수는 없음
if (www.isNetworkError || www.isHttpError) 에러있으면 에러 디버깅하고
{ Debug.Log(www.error); }
else
{ //IEnumerator 는 Json을 문자열로 반환 불가능 하므로 콜백함수 쓴다
// Call callback function to pass results
string jsonArray = www.downloadHandler.text;
callback(jsonArray);
}
}
람다식 관련 사이트 https://ansohxxn.github.io/unity%20lesson%201/chapter8-5/
-유니티 로그인, 회원가능,아이템 인벤토리, DB 데이터베이스, PHP언어 및 MySQL 서버 외국영상,
SampleJson은 구글 검색 후 깃허브 사이트 찾아서 쓰면 된다.
https://www.youtube.com/watchv=utwSPVGZiiw&list=PLTm4FjoXO7nfn0jB0Ig6UbZU1pUHSLhRU
3. 형변환 as, is
monsterPrefab = Resources.Load("Monster") as GameObject; //as로 형변환 필요함, 요즘에는 안쓰는 방식
is는 강제적으로 형 변환 할 때 사용한다고 함. as는 object형을 int로 변경할 때 안되고 is는 가능하다고 한다.
'유니티 & C# 공부' 카테고리의 다른 글
유니티 자격시험 Unity GameDeveloper)10. UI기초 (0) | 2021.12.10 |
---|---|
유니티 자격시험 Unity GameDeveloper)9.기즈모/시네마틱카메라 (0) | 2021.12.09 |
(유니티 자격시험 Unity GameDeveloper)6. 주인공 점수 감소/싱글톤(싱글턴)/발사체/유니티 예약 폴더 (0) | 2021.12.04 |
(유니티 자격시험 Unity GameDeveloper) 5. 네비게이션 (0) | 2021.12.04 |
(유니티 자격시험 Unity GameDeveloper)4. 애니메이션/유한상태머신/가비지콜렉션 GC (0) | 2021.12.02 |