Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Результат отключения родителя Игрового Объекта
Если родительский объект деактивирован, его отключение также перезаписывает опцию activeSelf у всех его дочерних элементов, то есть вся иерархия объектов, от родителя до каждого его потомка, становится неактивной. Однако этот процесс не меняет значения свойства activeSelf у дочерних элементов, они вернутся в первоначальное состояние, как только родитель будет снова активирован. Это значит, что нельзя судить, активирован ли в данный момент объект на сцене, по его свойству activeSelf. Вместо него, нужно использовать свойство activeInHierarchy, которое принимает во внимание эффект перезаписывания от родителя. Такое перезаписывающее поведение впервые появилось в Unity 4.0. В предыдущих версиях была функция под названием SetActiveRecursively, которую можно было использовать, чтобы активировать или деактивировать потомков данного родительского объекта. Однако эта функция отличалась тем, что параметр активации каждого потомка изменялся - можно было включать или отключать всю иерархию, но потомок не имел возможности “запомнить”, в каком состоянии он был изначально. Чтобы код предыдущих версий продолжал работать, SetActiveRecursively осталась и в API к 4.0, но использовать ее не рекомендуется, функция может быть исключена из API в будущем:- // JavaScriptfunction DeactivateChildren(g: GameObject, a: boolean) { g.activeSelf = a; for (var child: Transform in g.transform) { DeactivateChildren(child.gameObject, a); }} // C#void DeactivateChildren(GameObject g, bool a) { g.activeSelf = a; foreach (Transform child in g.transform) { DeactivateChildren(child.gameObject, a); }}Взаимоотношения компонента и скрипта Теги A Tag is a word which you link to one or more GameObjects. For instance, you might define “Player” and “Enemy” Tags for player-controlled characters and non-player characters respectively; a “Collectable” Tag could be defined for items the player can collect in the Scene; and so on. Clearly, Tags are intended to identify GameObjects for scripting purposes. We can use them to write script code to find a GameObject by looking for any object that contains our desired Tag. This is achieved using theGameObject.FindWithTag() function. К примеру: // Instantiates respawnPrefab at the location // of the game object with tag "Respawn" //JS var respawnPrefab: GameObject;var respawn = GameObject.FindWithTag ("Respawn");Instantiate (respawnPrefab, respawn.position, respawn.rotation); //C# using UnityEngine;using System.Collections; public class Example: MonoBehaviour { public GameObject respawnPrefab; public GameObject respawn; void Start() { if (respawn == null) respawn = GameObject.FindWithTag("Respawn"); Instantiate(respawnPrefab, respawn.transform.position, respawn.transform.rotation) as GameObject; }}This saves us having to manually add our GameObjects to a script’s exposed properties using drag and drop – a useful timesaver if the same script code is being used in a number of GameObjects. Another example is a TriggerCollider control script which needs to work out whether the player is interacting with an enemy, as opposed to, say, a random prop or collectable item. Tags make this kind of test easy. Date: 2015-09-24; view: 346; Нарушение авторских прав |