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); Більше
