[기초지식] 장면에서 데이터를 얻는 방법
개요
Unity에서 장면에있는 GameObject와 그것에 부착 된 구성 요소를 얻는 방법.
GameObject 얻기
Inspector에서 설정
검색을 할 때까지 실행 전 상태에서 이미 장면에있는 것에만 유효한 방법.
직렬화 가능한 필드를 작성하고 Unity Inspector에서 설정합니다.
Sample.cspublic class Sample : MonoBehaviour
{
// [SerializeField]を書くことで、シリアライズ可能なフィールドを宣言できる。
[SerializeField] private GameObject _object;
// publicなフィールドでも可。
// public GameObject _object;
}
GameObject 이름으로 검색
GameObject에 설정된 이름으로 검색합니다.
GameObject obj = GameObject.Find("探したいオブジェクト名");
연결된 부품으로 검색
특정 컴포넌트를 연결했을 때 사용 가능하지만 성능이 나쁘다.
GameObject obj = FindObjectOfType</*指定したいコンポーネント*/>().gameObject;
태그로 검색
Unity에서는 GameObject에 태그를 설정할 수 있으며 태그를 사용하여 검색합니다.
하지만 찾고자 하는 태그는 미리 태그 관리자에 설정되어 있어야 합니다.Find
이나 FindObjectOfType
에 비해 안정된 실행 속도를 자랑한다.
// 指定したタグを持つGameObjectを 1つ 取得する。
GameObject obj = GameObject.FindWithTag("探したいオブジェクトに設定されたタグ");
// 指定したタグを持つGameObjectを 全て 取得する。
GameObject[] objs = GameObject.FindGameObjectsWithTag("探したいオブジェクトに設定されたタグ");
구성 요소 얻기
Inspector에서 설정
방법은 GameObject 때와 같기 때문에, 이미지에서의 설명은 생략.
Sample.cs// 欲しいコンポーネントを仮に Example とする
public class Sample : MonoBehaviour
{
[SerializeField] private Example _object;
// または
// public Example _object;
}
GetComponent로 가져오기
GetComponent
함수로 얻는다.
지정한 GameObject로부터 컴퍼넌트를 취득하는 것이므로, GameObject의 취득과 조합하는 것도 가능.
// 自身を持つGameObjectにアタッチされた、他のコンポーネントを取得する場合
var cmp = this.gameObject.GetComponent</*欲しいコンポーネント*/>();
// CUBE という名前のGameObjectから取得したい場合
var cmp = GameObject.Find("CUBE").GetComponent</*欲しいコンポーネント*/>();
장면 내에서 얻기
GameObject의 때에 사용한 FindObjectOfType
의 본래의 용도.
자주 사용해서는 안됩니다.
// シーン内にある、指定したコンポーネントの1つを取得する
var cmp = FindObjectOfType</*欲しいコンポーネント*/>();
// シーン内にある指定したコンポーネント全てを取得する
var cmp = FindObjectsOfType</*欲しいコンポーネント*/>();
요약
Inspector에서 설정
검색을 할 때까지 실행 전 상태에서 이미 장면에있는 것에만 유효한 방법.
직렬화 가능한 필드를 작성하고 Unity Inspector에서 설정합니다.
Sample.cs
public class Sample : MonoBehaviour
{
// [SerializeField]を書くことで、シリアライズ可能なフィールドを宣言できる。
[SerializeField] private GameObject _object;
// publicなフィールドでも可。
// public GameObject _object;
}
GameObject 이름으로 검색
GameObject에 설정된 이름으로 검색합니다.
GameObject obj = GameObject.Find("探したいオブジェクト名");
연결된 부품으로 검색
특정 컴포넌트를 연결했을 때 사용 가능하지만 성능이 나쁘다.
GameObject obj = FindObjectOfType</*指定したいコンポーネント*/>().gameObject;
태그로 검색
Unity에서는 GameObject에 태그를 설정할 수 있으며 태그를 사용하여 검색합니다.
하지만 찾고자 하는 태그는 미리 태그 관리자에 설정되어 있어야 합니다.
Find
이나 FindObjectOfType
에 비해 안정된 실행 속도를 자랑한다.// 指定したタグを持つGameObjectを 1つ 取得する。
GameObject obj = GameObject.FindWithTag("探したいオブジェクトに設定されたタグ");
// 指定したタグを持つGameObjectを 全て 取得する。
GameObject[] objs = GameObject.FindGameObjectsWithTag("探したいオブジェクトに設定されたタグ");
구성 요소 얻기
Inspector에서 설정
방법은 GameObject 때와 같기 때문에, 이미지에서의 설명은 생략.
Sample.cs// 欲しいコンポーネントを仮に Example とする
public class Sample : MonoBehaviour
{
[SerializeField] private Example _object;
// または
// public Example _object;
}
GetComponent로 가져오기
GetComponent
함수로 얻는다.
지정한 GameObject로부터 컴퍼넌트를 취득하는 것이므로, GameObject의 취득과 조합하는 것도 가능.
// 自身を持つGameObjectにアタッチされた、他のコンポーネントを取得する場合
var cmp = this.gameObject.GetComponent</*欲しいコンポーネント*/>();
// CUBE という名前のGameObjectから取得したい場合
var cmp = GameObject.Find("CUBE").GetComponent</*欲しいコンポーネント*/>();
장면 내에서 얻기
GameObject의 때에 사용한 FindObjectOfType
의 본래의 용도.
자주 사용해서는 안됩니다.
// シーン内にある、指定したコンポーネントの1つを取得する
var cmp = FindObjectOfType</*欲しいコンポーネント*/>();
// シーン内にある指定したコンポーネント全てを取得する
var cmp = FindObjectsOfType</*欲しいコンポーネント*/>();
요약
// 欲しいコンポーネントを仮に Example とする
public class Sample : MonoBehaviour
{
[SerializeField] private Example _object;
// または
// public Example _object;
}
// 自身を持つGameObjectにアタッチされた、他のコンポーネントを取得する場合
var cmp = this.gameObject.GetComponent</*欲しいコンポーネント*/>();
// CUBE という名前のGameObjectから取得したい場合
var cmp = GameObject.Find("CUBE").GetComponent</*欲しいコンポーネント*/>();
// シーン内にある、指定したコンポーネントの1つを取得する
var cmp = FindObjectOfType</*欲しいコンポーネント*/>();
// シーン内にある指定したコンポーネント全てを取得する
var cmp = FindObjectsOfType</*欲しいコンポーネント*/>();
실행 확인 환경
Unity [2018.2 이상]
Reference
이 문제에 관하여([기초지식] 장면에서 데이터를 얻는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/RabitBox/items/5f473150a2924be233d5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([기초지식] 장면에서 데이터를 얻는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/RabitBox/items/5f473150a2924be233d5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)