ExposedReference<T0>
структура в UnityEngine
Выполнено в:UnityEngine.CoreModule
Описание
Создает тип, значение которого разрешается во время выполнения.
ExposedReference является общим типом, который может быть использован для создания ссылок на объекты Scene и разрешения их фактических значений во время выполнения и с помощью объекта контекста. Это может быть использовано ассетами, такими как ScriptableObject или PlayableAsset для создания ссылок на объекты Scene.
В приведенном ниже примере показано, как PlayableAsset может использовать открытые ссылки для создания ссылок на объекты Scene GameObject. Это пример, в котором используется Timeline, так что вы можете настроить GameObject в Timeline и для создания анимации с GameObject.
//Put both of these scripts in your Project, then go to your Timeline, click the Add dropdown and choose Playable Track. Place this script on your Timeline as a Playable Track //Click on the track and choose a GameObject from your Scene in the "My Scene Object" field. Also set the velocity.
using UnityEngine; using UnityEngine.Playables;
[System.Serializable] public class ExposedReferenceExample : PlayableAsset { //This allows you to use GameObjects in your Scene public ExposedReference<GameObject> m_MySceneObject; //This variable allows you to decide the velocity of your GameObject public Vector3 m_SceneObjectVelocity;
public override Playable CreatePlayable(PlayableGraph graph , GameObject myGameObject) { //Get access to the Playable Behaviour script TestExample playableBehaviour = new TestExample(); //Resolve the exposed reference on the Scene GameObject by returning the table used by the graph playableBehaviour.m_MySceneObject = m_MySceneObject.Resolve(graph.GetResolver());
//Make the PlayableBehaviour velocity variable the same as the variable you set playableBehaviour.m_SceneObjectVelocity = m_SceneObjectVelocity;
//Create a custom playable from this script using the Player Behaviour script return ScriptPlayable<TestExample>.Create(graph, playableBehaviour); } }
Поместите этот следующий скрипт в Project в ту же папку, что и вышеуказанный скрипт. Этот скрипт изменяет поведение временной шкалы, перемещая Scene GameObject во время воспроизведения воспроизводимого трека.
using UnityEngine; using UnityEngine.Playables;
public class TestExample : PlayableBehaviour { public GameObject m_MySceneObject; public Vector3 m_SceneObjectVelocity;
public override void PrepareFrame(Playable playable, FrameData frameData) { //If the Scene GameObject exists, move it continuously until the Playable pauses if (m_MySceneObject != null) //Move the GameObject using the velocity you set in your Playable Track's inspector m_MySceneObject.transform.Translate(m_SceneObjectVelocity); } }
Свойства
| Свойство | Описание |
|---|---|
| defaultValue | Значение по умолчанию, если значение не может быть разрешено. |
| exposedName | Имя ExposedReference. |
Открытые методы
| Метод | Описание |
|---|---|
| Resolve | Получает значение ссылки путем разрешения ее с помощью объекта контекста ExposedPropertyResolver. |