사전 제작 어셈블리에서 생성된 인스턴스의 하위 객체 가져오기
네가 실례지, 네 아이의 상대에 대해서만 말해줘!
게임 캐릭터의 상태 화면을 동적으로 생성하는 방법을 고려했다.
(※ 캐릭터 그림은'루즈도라'공식 배포물 사용)
위의 그림과 같은 판넬을 모두 미리 조립하면 언제든지 실례를 만들 수 있습니다!기쁠 때.
"그럼, 실례적인 여자애에게 이름을 지어주세요. 엠마는 좋아요?"라고 생각하지만, 조립식 건물 안의 게임 오브젝트(위의 그림은 판넬의 서브name)를 변경할 수 없습니다.실례 자신의 하위 대상에 접근하는 방법을 전혀 모른다.날씨가 아닌 아이.
먼저 스크립트를 예비 조립체에 추가하여 예비 조립체 실례를 생성할 때 GameObject를 진행합니다.나는 늘 완성할 수 있다면 좋겠다고 생각한다.
sample01.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class sample01 : MonoBehaviour
{
GameObject UI_Text;
void Start()
{
UI_Text = Gameobject.Find("name");
UI_Text.GetComponent<Text>().text = "エマちゃん";
}
}
언뜻 보니 상술한sample01.cs에서 뜻밖에도 이렇다니, 이것은 문제가 있다.사전 조립식 서버의 실례를 만들 때마다 이름이'name'인 Game Object를 얻다니.하나의 실례만 만들어진다면 그럴 수도 있지만 여러 실례가 만들어질 때는 비참하다.전혀 상관없는 다른 캐릭터는'엠마'로 개명되었다.하기 어렵다.
"다른 상대는 상관없어, 너의 아이 상대만 말해줘!"그럼
너의 이름은
나는 항상 실례 자신을 가리킬 때this를 더하면 된다고 생각한다.이것만 더하면 실례 자체가 가지고 있는 Game Object를 완성할 수 있다.sample01.cs의 Find 섹션을 다음과 같이 변경합니다.
UI_Text = this.gameObject.Find("name");
this는 "예제 조립체에 부착된 스크립트 실례"를 가리킨다.주문이야?다만, 이렇게 하면 오류가 발생할 수 있다.gameObject.Find 아니요.다른 방법으로 하위 대상을 얻을 수밖에 없을 것 같습니다.나는 이곳에서 매우 반했다.this.트랜스포머로 너의 아이를 쫓아가다
조사 과정에서 Game Object를 획득하는 방법은 Game Object입니다.Find 이외에 또 다른 일이 있습니다.transform.Find에서 Game Object를 가져오는 방법이 있는 것 같습니다.
sample02.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class sample02 : MonoBehaviour
{
GameObject UI_Text;
void Start()
{
UI_Text = this.transform.Find("name").gameObject;
}
}
위 코드에서,this에서 실례 자체를 지정하고, 실례 자체가 가지고 있는'name'GameObject의transform 구성 요소를 가져옵니다.transform.Find() 반환값은transform형이므로 GameObject형으로 가져오기 때문에 끝에 있습니다.gameObject가 있습니다.이렇게 하면 실례 자체의'name'GameObject를 얻을 수 있기 때문에 그 다음에는 GetComponent<>만 있으면 된다.
드디어 실례를 알게 된 아이.
※ 주석
GameObject.Find는 무거운 처리인 것 같아서 잘 사용하지 않는 것이 좋습니다. (특히 업데이트에 쓰면 무거워집니다.)
"그럼 transform. Find 하면 되잖아!"이렇게 될 수도 있지만 서로 다른 점이 있는 것 같다.
참조 링크:[Unity] Find 방법에 대한 설명 및 사용 방법 전달[객체 획득 가능]
이번에 반한 것은 입문서와 입문 사이트의 Game Object를 참고하는 것이다.Find가 자주 생겨서 그런 거지.왜 무거운 처리를 추천하는 거죠?Unity 프로그래밍이 Game Object에서 시작하여 Game Object로 끝나기 때문에 이해하기 쉽죠.
부드럽고 귀여운 여선생님이 말했다. "그럼 게임 오브젝트라는 것에 익숙해져라!"이게 얼마나 가벼운 분위기인지 생각하면 좋네요.
Reference
이 문제에 관하여(사전 제작 어셈블리에서 생성된 인스턴스의 하위 객체 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yonakachan/items/6c2889e069465ff7dab1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)