Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

SerializedProperty.managedReferenceValue

public object managedReferenceValue;

Описание

Объект, назначенный полю с атрибутом SerializeReference.

Для использования, когда propertyType равен SerializedPropertyType.ManagedReference.

Объект значения должен быть типа, совместимого с базовым типом поля управляемой ссылки (то есть поля управляемой ссылки, на которое ссылается сериализованное свойство).

Смотрите так же: SerializeReference, propertyType, SerializedPropertyType.ManagedReference.

using System; using System.Collections.Generic; using UnityEditor; using UnityEngine; using Object = UnityEngine.Object; public class SerializedPropertyManagedReferenceValueExample : ScriptableObject { [Serializable] public class Item { public int m_data = 1; public int DoCalculation() { // Could be querying some external data, or other calculation that cannot be // made entirely based on the local object state m_data++; return m_data * 2; } } [SerializeReference] public Item m_Item; [MenuItem("Example/SerializedProperty ManagedReferenceValue Example1")] static void TestMethod1() { var scriptableObject = ScriptableObject.CreateInstance(); var serializedObject = new SerializedObject(scriptableObject); // Allocate and assign an object to the m_Item field via managedReferenceValue var referenceProperty = serializedObject.FindProperty("m_Item"); referenceProperty.managedReferenceValue = new Item(); // Change a value of the object's field referenceProperty.FindPropertyRelative("m_data").intValue = 99; // Apply the change back to the "live" object serializedObject.ApplyModifiedProperties(); // Will print "Value of m_data: 99" Debug.Log("Value of m_data: " + scriptableObject.m_Item.m_data); } [MenuItem("Example/SerializedProperty ManagedReferenceValue Example2")] static void TestMethod2() { var scriptableObject = ScriptableObject.CreateInstance(); scriptableObject.m_Item = new Item(); var serializedObject = new SerializedObject(scriptableObject); var referenceProperty = serializedObject.FindProperty("m_Item"); // The "live" referenced object can be accessed so we can call a method on it (referenceProperty.managedReferenceValue as Item).DoCalculation(); // The serialized state inside the SerializedObject is now out of data with the change // of m_data on the live object, but can be brought back in sync by calling Update() var serializedDataValue = serializedObject.FindProperty("m_Item.m_data").intValue; serializedObject.Update(); var updatedSerializedDataValue = serializedObject.FindProperty("m_Item.m_data").intValue; // Will print: "Value of m_data before update: 1 and after update: 2" Debug.Log("Value of m_data before update: " + serializedDataValue + " and after update: " + updatedSerializedDataValue); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3