본문 바로가기

유니티

유니티2D에서 A 오브젝트의 랜덤 결과 값을 B 오브젝트에서 불러오는 방법은?

728x90
반응형

A 오브젝트와 B 오브젝트가 서로 다른 스크립트를 가지고 있다면, A 오브젝트에서 랜덤한 값을 생성한 뒤, B 오브젝트에서 이 값을 불러올 수 있습니다.

예를 들어, A 오브젝트의 스크립트에서는 Random.Range() 함수를 사용하여 랜덤한 값을 생성하고, 이 값을 B 오브젝트의 스크립트에서 사용해야 한다고 가정해보겠습니다.

A 오브젝트에서 랜덤 값을 생성하는 코드 작성

public class A : MonoBehaviour {
private int randomValue;

void Start() {
randomValue = Random.Range(0, 100);
}

public int GetRandomValue() {
return randomValue;
}
}


Random.Range() 함수를 사용하여 0부터 99까지의 랜덤한 정수 값을 생성하고, 이 값을 randomValue 변수에 저장합니다. 그리고 GetRandomValue() 함수를 통해 이 값을 반환합니다.

B 오브젝트에서 A 오브젝트의 랜덤 값을 불러오는 코드 작성
public class B : MonoBehaviour {
private A aObject;
private int randomValue;

void Start() {
aObject = GameObject.FindObjectOfType<A>();
randomValue = aObject.GetRandomValue();
}

void Update() {
Debug.Log("Random value from A object: " + randomValue);
}
}


Start() 함수에서 FindObjectOfType<A>() 함수를 사용하여 A 오브젝트를 찾고, GetRandomValue() 함수를 호출하여 A 오브젝트에서 생성된 랜덤 값을 가져옵니다. 그리고 randomValue 변수에 이 값을 저장합니다. 이제 Update() 함수에서 randomValue 값을 출력할 수 있습니다.

위의 예시 코드에서는 GameObject.FindObjectOfType<A>() 함수를 사용하여 A 오브젝트를 찾았지만, 이는 오브젝트의 이름이나 태그를 사용하여 직접 찾을 수도 있습니다. 또한, A 오브젝트가 여러 개 있다면 FindObjectsOfType<A>() 함수를 사용하여 모든 A 오브젝트를 찾을 수 있습니다. 이 경우에는 배열로 반환되므로, 인덱스를 사용하여 원하는 A 오브젝트의 랜덤 값을 가져와야 합니다.

이름으로 오브젝트를 찾는 방법
오브젝트의 이름을 알고 있다면 GameObject.Find() 함수를 사용하여 직접 오브젝트를 찾을 수 있습니다. 예를 들어, A 오브젝트의 이름이 "A_Object" 라고 가정해보겠습니다.

public class B : MonoBehaviour {
private GameObject aObject; // A 오브젝트를 저장할 변수
private int randomValue; // A 오브젝트에서 생성된 랜덤 값을 저장할 변수

void Start() {
aObject = GameObject.Find("A_Object"); // "A_Object" 이름을 가진 오브젝트를 찾아서 aObject 변수에 저장
A aScript = aObject.GetComponent<A>(); // aObject 오브젝트에 붙어 있는 A 스크립트를 가져와서 aScript 변수에 저장
randomValue = aScript.GetRandomValue(); // aScript 변수에서 GetRandomValue 함수를 호출하여 A 오브젝트에서 생성된 랜덤 값을 randomValue 변수에 저장
}

void Update() {
Debug.Log("Random value from A object: " + randomValue); // randomValue 변수에 저장된 랜덤 값을 콘솔에 출력
}
}


위 코드는 B 스크립트에서 A 오브젝트에 붙어 있는 A 스크립트의 GetRandomValue 함수를 호출하여 A 오브젝트에서 생성된 랜덤 값을 가져오는 예시입니다. Start 함수에서는 A 오브젝트를 찾아서 그 오브젝트에 붙어 있는 A 스크립트를 가져와서 A 오브젝트에서 생성된 랜덤 값을 변수에 저장합니다. 그리고 Update 함수에서는 그 변수에 저장된 랜덤 값을 출력합니다.

GameObject.Find() 함수를 사용하여 "A_Object" 이름의 오브젝트를 찾고, GetComponent<A>() 함수를 사용하여 A 오브젝트의 스크립트를 가져옵니다. 이제 GetRandomValue() 함수를 호출하여 A 오브젝트에서 생성된 랜덤 값을 가져옵니다.

태그로 오브젝트를 찾는 방법
오브젝트의 태그를 사용하여 여러 개의 오브젝트 중에서 특정한 오브젝트를 찾을 수 있습니다. 예를 들어, A 오브젝트의 태그를 "A_Tag" 로 설정하고, B 오브젝트에서 이를 찾아서 사용해보겠습니다.

public class B : MonoBehaviour {
private GameObject[] aObjects; // A 태그가 붙어 있는 모든 오브젝트를 저장할 배열
private int randomValue; // A 오브젝트에서 생성된 랜덤 값을 저장할 변수

void Start() {
aObjects = GameObject.FindGameObjectsWithTag("A_Tag"); // "A_Tag" 태그가 붙어 있는 모든 오브젝트를 찾아서 aObjects 배열에 저장
A aScript = aObjects[0].GetComponent<A>(); // aObjects 배열에서 첫 번째 오브젝트에 붙어 있는 A 스크립트를 가져와서 aScript 변수에 저장
randomValue = aScript.GetRandomValue(); // aScript 변수에서 GetRandomValue 함수를 호출하여 A 오브젝트에서 생성된 랜덤 값을 randomValue 변수에 저장
}

void Update() {
Debug.Log("Random value from A object: " + randomValue); // randomValue 변수에 저장된 랜덤 값을 콘솔에 출력
}
}


위 코드는 B 스크립트에서 A 태그가 붙어 있는 모든 오브젝트에 붙어 있는 A 스크립트의 GetRandomValue 함수를 호출하여 A 오브젝트에서 생성된 랜덤 값을 가져오는 예시입니다. Start 함수에서는 A 태그가 붙어 있는 모든 오브젝트를 찾아서 그 중 첫 번째 오브젝트에 붙어 있는 A 스크립트를 가져와서 A 오브젝트에서 생성된 랜덤 값을 변수에 저장합니다. 그리고 Update 함수에서는 그 변수에 저장된 랜덤 값을 출력합니다.

728x90
반응형