목록유니티 (33)
안 쓰던 블로그
드디어!!!! 해내서!!!! 동작해서!!! 글로 기록합니다 원하는 것: Prefab로 만든 Button을 Instantiate로 생성한 뒤, 생성한 오브젝트에 OnClick 이벤트를 할당하고 싶다 Button Prefab는 현재 이런 상태 Box Manager 스크립트에 Gm5에는 OnClickbox5() 라는 함수가 있다 각 Box Manager에 Me에는 이후에 Clone 오브젝트로 생성된 Prefab들의 번호가 들어갈 것이다 이 Prefab을 게임 실행 중 생성하고, On Click()에는 OnClickbox5() 함수를 넣어서, 클릭했을 때 이 함수가 실행되었으면 한다 실패: Button newText = Instantiate(probText, Vector3.zero, Quaternion.iden..
LayoutGroup을 적용한 부모 오브젝트 아래로, Text Prefab를 Instantiate로 생성해서 자식 오브젝트로 넣는 방식으로 정렬시켰다 이 상황에서 자식으로 생성된 Clone들의 Position을 가져오고 싶은 상태 (위 사진에서 Pos X와 Pos Y) 일반적으로 사용하는 RectTransform의 anchoredPosition으로 가져오는 방법과, 게임 오브젝트라면 transform.position으로 가져오는 방법을 사용할 수 있다 obj.transform.position.x; 근데 이렇게 하면 (0, 0, 0)만 출력된다 생성하면서 position을 저장해서 그런가 해서, Clone들을 Find해서 게임 오브젝트 리스트에 담아서 출력하는 방법도 써 보고, GetComponentsIn..
유니티 2020.3 기준이지만, 다른 버전도 다 가능합니다. 구글에 유니티 APK 빌드 방법을 검색하면 블로그들에서 다들 nvidia에서 다운로드 받으라고 한다. https://developer.nvidia.com/codeworks-android APK 빌드 하려면 JDK, SDK가 필요한데, 내 기억으로는 예전에는 하나씩 다운로드 받아서 연결해 주었다(가물해서 정확하지 않다). 저 nvidia에서 제공하는 zip파일을 사용하면 한 번에 다운로드 해 주는 것 같았다. 그런데 저렇게 설치하면 일단 1) 시간이 꽤 오래걸리고 2) 재부팅 필수 3) unity android ndk not found (NDK 없음) 에러가 났다. (유니티 2020.3 기준) NDK를 따로 다운로드 받아서 연결해 줄 수 있지만 ..
씬 구성은 이렇고, 뒤에 통장을 누르면 1) 회색 화면을 깔고 2) 그 위에 처리, 거절 버튼이 위에 올라왔으면 좋겠다 처음부터 회색 화면과 처리, 거절이 보이면 안 되니까 void start()에다가 SetActive(false)를 넣어서 시작 하자마자 비활성화를 했다 GameObject.Find("gray").SetActive(false); GameObject.Find("처리").SetActive(false); GameObject.Find("거절").SetActive(false); 근데 이러면 문제가, 통장을 눌렀을 때 회색, 처리, 거절 오브젝트를 find하고 SetActive(true);를 해야 하는데 false인 오브젝트는 find가 안 된다 해결 방법은 활성화된 부모를 찾아서 비활성화된 자식을..
맨 왼쪽 박스를 클릭하면 가운데에서 확대되는 기능을 만들려고 한다 박스에는 Image와 Button이 붙어 있다 UI의 경우 Canvas밑에 위치하게 되고 Canvas는 설정에 따라 다르지만 보통 메인 카메라의 바로 앞에 놓여진다 그래서 UI 오브젝트의 width나 height 속성을 변경하는 방법은 일반적인 게임 오브젝트와는 조금 다르다 UI 오브젝트는 Rect Transform 컴포넌트를 가지고 있는데, 이 컴포넌트의 width와 height을 조정하는 것으로 크기 변경이 가능하다 public void clickIDCard() { RectTransform rectTran = gameObject.GetComponent(); rectTran.SetSizeWithCurrentAnchors(RectTrans..
이미지 박스 6개에다가 랜덤으로 이미지를 붙이는 동작을 하는 스크립트 객체가 6개에 이름이 box1Image, box2Image..니까 유니티 뉴비가 딱 보고 짰던 코드 public GameObject box1Image, box2Image, box3Image, box4Image, box5Image, box6Image; box1Image.GetComponent().me = 1; box2Image.GetComponent().me = 2; box3Image.GetComponent().me = 3; box4Image.GetComponent().me = 4; box5Image.GetComponent().me = 5; box6Image.GetComponent().me = 6; bm = new List(); bm.A..
Text[] boxText = boxtext.GetComponentsInChildren(); print(boxText.Length); Length가 0으로 나와서 빈 배열을 참고했다는 에러가 나올 때 해결 방법 일단 부모-자식 관계가 제대로 되어 있는지부터 확인한다 그리고 부모 게임 오브젝트를 GameObject.Find()로 가져왔으면 이름이 틀리진 않았는지 확인하고 public으로 가져왔으면 잘 넣어줬는지 확인한다 그리고 중요한 점 GetComponentsInChildren은 자식 오브젝트가 켜져있어야 가져와진다!! 다 꺼놓고 원하는 만큼 SetActive(True)하려고 했더니만 활성화 되어있지 않다면 아예 없는 취급하더라ㅋㅋ +댓글로 누군가 알려주신 내용 추가 GetComponentsInChild..