문자열값으로 변수 또는 함수 불러오는법

유니티 C# 2017. 8. 29. 13:49

문자열로 변수 불러오기

public int A = 10;



Debug.Log(this.GetType().GetField("A").GetValue(this));


출처: https://stackoverflow.com/questions/11122241/accessing-a-variable-using-a-string-containing-the-variables-name




문자열로 함수 부르기

public string A = "Test";



public void Test()

{

Debug.Log("Test");

}



this.GetType().GetMethod(A).Invoke(this, null);


출처: https://stackoverflow.com/questions/540066/calling-a-function-from-a-string-in-c-sharp



유니티에서 터치 처리

유니티 C# 2017. 8. 13. 15:39

먼저 http://prosto.tistory.com/96 블로그에서 참고하였습니다.



private Touch tempTouchs;

private Vector3 touchedPos;


if(Input.touchCount > 0)//터치가 1개 이상이면.

{

for(int i = 0; i < Input.touchCount; i++) 

{

//UI 클릭시 터치 이벤트 발생 방지

if(EventSystem.current.IsPointerOverGameObject(i) == false)

{

tempTouchs = Input.GetTouch(i);


if(tempTouchs.phase == TouchPhase.Began) //해당 터치가 시작되었다면.

{

//터치 좌표값 가져오기

touchedPos = Camera.main.ScreenToWorldPoint(tempTouchs.position);


break; //한 프레임에는 하나만

}

}

}

}




입니다.


터치 상태 종류

Began(터치 시작)

Canceled(터치 취소)

Ended(터치 종료)

Moved(터치 후 움직임)

Stationary(터치 후 대기)





UI 클릭시 터치 이벤트 발생 방지 관련 주의할 점

Raycast Target이 체크가 되어있어야된다.

만약 체크가 풀려있으면 위의 코드는 상관없어진다.

유니티 Scale With Screen Szie로 ui크기 조정해서 코드상으로 ui생성 시 크기 변경이 안되는 현상

유니티 C# 2017. 8. 12. 05:00

유니티에서 지원하는 Scale With Screen Szie를 사용하면 여러 해상도에서 일정한 크기의 ui를 이용하실 수 있습니다.


하지만 코드상에서 프리팹을 가져와서 생성같은것을 하면 해상도에 따라 크기가 제각각으로 변할 수 있습니다.


저또한 그것으로 인해 인터넷을 뒤져본 결과


http://answers.unity3d.com/questions/1037474/prefab-does-not-scale-in-scale-with-screen-size-mo.html


저와 같은 증상의 사람을 발견하였으며 해결방법로 위의 링크에 있었습니다.!


방법은 go.transform.SetParent(parent.transform, false); 이라는 코드를 넣어주시면 됩니다.

들어가서 보았더니 월드 포지션을 유지할것인지 불값으로 정해주는 코드더군요

유니티 Hierarchy 순서 변경 방법

유니티 C# 2017. 8. 3. 21:19

가장 마지막으로 순서 변경

Transform.SetAsLastSibling


가장 처음으로 순서 변경

Transform.SetAsFirstSibling


순서 설정(index 값)

Transform.SetSiblingIndex


현재 순서 반환(index 값)

Transform.GetSiblingIndex

유니티 구글플레이 연동 후 로그인이 안되는 문제

유니티 C# 2017. 7. 27. 20:59

유니티에 구글플레이 연동을 한뒤 로그인코드를 작성하여 폰에넣고 실행해봤는데 안된다면 여러가지 상황이 있습니다.


제가 검색해봐서 본것중 


1. 테스트 계정을 등록해야 하는것입니다.(테스트 일 경우)

2. 저장된게임을 활성화 하시면 EnableSavedGames() 이 코드를 추가하셔야 합니다. 만약 활성화를 안하셨으면 저 코드를 적으면 안됩니다.

3. API관리자에서 사용자 인증 정보를 추가하여야 합니다.(제가 해결한 방법입니다.)


먼저 제가 해결한 방법의 링크는 http://answers.unity3d.com/questions/1357666/google-play-games-services-authentication-fails.html 입니다.


1. Google Play Console -> 앱선택 -> 출시 관리 -> 앱 서명 -> 앱 서명 인증서 : SHA-1 복사

2. https://console.developers.google.com/ 을 열고 프로젝트 -> 자격증명 -> Oauth 2.0 클라이언트 ID -> OAuth 클라이언트 편집 -> 서명 인증서 지문 -> 이전 SHA1을 복사 된  SHA1로 바꾸기 -> 저장을 선택하십시오.


이것으로 저는 해결했습니다.