Unity/Unity 리서치 103

Inactive된 자손 포함 전체 검색

1. trasform.Find("GameObject이름").GetComponent(); 로 하면 Inactive되어 있더라도 찾아진다. 2. 특정 오브젝트의 자손을 모두 삭제하는 코드 private void RemoveAllCards() { var child = contents.transform.GetComponentsInChildren(); foreach (var iter in child) { if(iter != contents) { Destroy(iter.gameObject); } } } 위 코드는 자손 중 Inactive된 GameObject는 찾지 못한다. Solution var child = contents.transform.GetComponentsInChildren(true); 매개변수로 tr..

Unity Editor에서 Firebase 사용하기

Firebase는 스마트폰 디바이스에서만 작동하고 Unity Editor에서는 안되는 줄 알았는데, 우연히 잘 쓰고 있는 사람들을 봄. ① Firebase에서 데이터를 받아오는 부분을 보니 주석처리까지는 정상동작되는데 -> 통신까지는 제대로 된다는 것 ②try부분에서 짤림. ③에러로그를 출력안해서 try catch로 해봄. #### System.AggregateException: One or more errors occurred. ---> Firebase.Firestore.FirestoreException: Missing or insufficient permissions. Editor에서 테스트 시에는 규칙 true로 바꿔주면 됨. 폰에서는 한번 SignIn이 되어있었으니, 중간에 다른 Scene으로 끼..

Unity Firebase용 데이터 클래스

이렇게 해야 Object그대로 Firebase에 올릴 수 있음 using Firebase.Firestore; [FirestoreData] public class User { [FirestoreProperty] public string Uid { get; set; } [FirestoreProperty] public string Email { get; set; } [FirestoreProperty] public string Nickname { get; set; } [FirestoreProperty] public int Level { get; set; } [FirestoreProperty] public bool IsFinishTutorial { get; set; } [FirestoreProperty] publ..

Animation Override Controller

특정 Unit의 Animation을 바꾸고 싶을 때 Animator 유닛의 움직임은 대동소이함 특정 State의 움직임만 살짝 다른데 그때마다 Animator을 새로 생성하는 것은 귀찮은 작업이 될 것. Animation Override Controller 사용 위 그림처럼 바꾸고 싶은 Animation만 바꿔주면 전체 Animator의 틀은 유지되면서 Override한 애니매이션만 다른 걸로 교체되게 된다. RTS Engine에서 유의할 점 Unit컴포넌트의 Animation Override Controller에다가 넣어야 적용이 된다 (Play시 여기에 들어있는 걸로 바꿔치기함)

Canvas와 World좌표 연동 (Camera.WorldToScreenPoint)

public class HoborController : MonoBehaviour { [SerializeField] Image image; [SerializeField] Transform cube; [SerializeField] Camera camera; // Update is called once per frame void Update() { // Debug.Log($"{camera.WorldToScreenPoint(cube.position)}"); image.transform.position = camera.WorldToScreenPoint(cube.position); } } WorldToScreenPoint 함수는 World의 좌표를 Canvas의 좌표로 변환시켜줌 Canvs의 RenderMode가 ..

RectTransform의 width, height 알아내기

한쪽방향만 Stratch하고, 일정비율을 유지하고 싶을 때 가로에 9/16을 곱해주면 되는데, 가로 값이 제대로 나오지 않음 mScreen.rectTransform.sizeDelta = new Vector2(0, mScreen.rectTransform.rect.width *9/16); Solution RectTransform.rect.width 로 구하는건 맞는데, Start()에서 하면 안되고, 코루틴을 쓰던, Update에서 하던 조금 있다가 해야 한다. 그리는데 시간이 걸림. Get size of stretched RectTransform When working with Unity UI system, sometimes it is useful to know what the size of a given..