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 함수에서는 그 변수에 저장된 랜덤 값을 출력합니다.
'유니티' 카테고리의 다른 글
유니티2D에서 게임 끝날 때 플레이어의 레벨, 체력을 저장했다가 게임 시작할 때 불러오는 방법은? (0) | 2023.03.27 |
---|---|
유니티2D에서 다른 씬에 있는 오브젝트의 변수값을 해당 씬의 오브젝트로 가져와서 계산하는 코드 (0) | 2023.03.27 |
가위바위보 이미지가 빠르게 바뀌다가 3초 뒤에 랜덤으로 선택되서 보여지는 코드 (0) | 2023.03.27 |
유니티2D 조이스틱 코드 (0) | 2023.03.23 |
Unity Ads API를 사용하여 광고를 보고 닫으면 특정 포인트를 추가하는 코드 (0) | 2023.03.22 |