사전 제작 어셈블리에서 생성된 인스턴스의 하위 객체 가져오기

4799 단어 UnityC#
사전 조립식 서버에서 생성된 실례적인 하위 대상을 얻고 싶었지만 그때 빠져서 비망록입니다.

네가 실례지, 네 아이의 상대에 대해서만 말해줘!


게임 캐릭터의 상태 화면을 동적으로 생성하는 방법을 고려했다.

(※ 캐릭터 그림은'루즈도라'공식 배포물 사용)
위의 그림과 같은 판넬을 모두 미리 조립하면 언제든지 실례를 만들 수 있습니다!기쁠 때.
"그럼, 실례적인 여자애에게 이름을 지어주세요. 엠마는 좋아요?"라고 생각하지만, 조립식 건물 안의 게임 오브젝트(위의 그림은 판넬의 서브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로 끝나기 때문에 이해하기 쉽죠.
부드럽고 귀여운 여선생님이 말했다. "그럼 게임 오브젝트라는 것에 익숙해져라!"이게 얼마나 가벼운 분위기인지 생각하면 좋네요.

좋은 웹페이지 즐겨찾기