Unity Компоненти

2075 / Unity / 2D / 3D / Компоненти

 

Пошук об'єкту по ієрархії

GameObject.Find("Monster") - знайти по імені або null
GameObject.FindWithTag("Monster") - повертає один об'єкт або null
GameObject.FindGameObjectWithTag("Monster") - повертає якийсь один об'єкт або null
GameObject.FindGameObjectsWithTag("Monster") - повертає масив об'єктів 
або пустий масив
gameObject.transform.GetChild(0) - взяти першу дитину
gameObject.transform.Find("ammo") - знайти ammo серед підоб'єктів
gameObject.transform.Find("magazine/ammo") - знайти ammo, що в magazine
GameObject.Find("buttonName").GetComponentInChildren<Text>().text = "Menu";
GameObject.Find("buttonName").GetComponentInChildren().text = "Menu";

Пошук по часу створення об'єкта
Light tmp = (Light)FindObjectOfType(typeof(Light)) 
MyScript tmp = (MyScript)FindObjectOfType(typeof(MyScript)) 
// Бере перший або помилка, якщо не знайшов
tmp.enabled = false;

FindObjectsOfType<Monster>() - повертає масив монстрів
IFire[] arr = FindObjectsOfType<MonoBehaviour>(true).OfType<IFire>().ToArray(); 
// повертає масив інтерфейсів
// true - неактивні теж, і навіть запустить їх функцію
// false - лише активні (можна не вказувати)

Зробити батьком
child.transform.SetParent(father.transform);

Від'єднатися від батька
transform.SetParent(null); // на глобальний рівень

Батько батька 
transform.parent.parent.name;

Якщо не в тій самій ієрархії
if (collision.transform.root != transform.root) { }

Усі діти, навіть ті, що неактивні
foreach (Transform child in transform)
{
  print(child);
}



private GameObject obj;

void Start () {
  obj = GameObject.FindGameObjectWithTag("Player");
}


 

Увімкнути / вимкнути колайдер

other.GetComponent<Collider>().enabled = false;
 
   
Доступ до змінної в іншому скрипті

Obj1 Script1
public int life = 100;

Obj2 Script2
GameObject thePlayer = GameObject.Find("Obj1");
Script1 script = obj.GetComponent<Script1>();
script.life -= 10.0f;

Або

GameObject.Find("Obj1").GetComponent<Script1>().life -= 10.0f;

 
Заморозити / розморозити Rigidbody

rb.constraints = RigidbodyConstraints.FreezeRotation; // заморозити
rb.constraints = RigidbodyConstraints.None; // розморозити
rb.isKinematic = true; // не реагувати на інших

 
Додати Rigidbody

private Rigidbody rb;

void Awake()
{
  rb = gameObject.AddComponent<Rigidbody>();
}

void Update()
{
  rb.AddForce(transform.up * 10f);
}

 
Відключити скрипт

obj.GetComponent<YourScript>().enabled = false;

 
Напівпрозорий

GetComponent<MeshRenderer>().material.color = new Color(1f, 1f, 1f, 0.5f); // Матеріал
GetComponent<Image>().color = new Color(1f, 1f, 1f, 0.5f); // Меню

 
Зробити синім

GetComponent<SpriteRenderer>().color = new Color(0f, 0f, 1f, 1.0f);

 
Більше