コード例 #1
0
 public static void DeserializeUnityObject(string stringData, [NotNull] Object objectToOverwrite, ref List <Object> objectReferences)
 {
     //Use Unity's own JsonUtility for serializing built-in UnityObject types
     //because it's more efficient and because OdinSerializer seems to have problems
     //serializing some built-in Components like Transform.
     if (ShouldUseJsonUtilityForTargetSerialization(objectToOverwrite))
     {
                         #if UNITY_EDITOR
         UnityEditor.EditorJsonUtility.FromJsonOverwrite(stringData, objectToOverwrite);
                         #else
         JsonUtility.FromJsonOverwrite(stringData, objectToOverwrite);
                         #endif
     }
     //for user-created Components (MonoBehaviours and ScriptableObjects) use OdinSerializer
     //so that also fields that JsonUtility cannot serialize also get copied.
     else
     {
                         #if DONT_USE_ODIN_SERIALIZER
         var jsonString = JsonConvert.SerializeObject(target, InspectorPreferences.jsonSerializerSettings);
                         #if DEV_MODE
         Debug.Log("Target Serialized with Json.NET:\n" + jsonString, target);
                         #endif
         return(jsonString);
                         #else
         string deserializeFromString = stringData;
         byte[] bytes = Encoding.UTF8.GetBytes(deserializeFromString);
         UnitySerializationUtility.DeserializeUnityObject(objectToOverwrite, ref bytes, ref objectReferences, DataFormat.JSON);
                         #endif
     }
 }
コード例 #2
0
        public static void DeserializeUnityObject(byte[] bytes, [NotNull] Object objectToOverwrite, ref List <Object> objectReferences)
        {
            //Use Unity's own JsonUtility for serializing built-in UnityObject types
            //because it's more efficient and because OdinSerializer seems to have problems
            //serializing some built-in Components like Transform.
                        #if !DONT_USE_ODIN_SERIALIZER
            if (ShouldUseJsonUtilityForTargetSerialization(objectToOverwrite))
                        #endif
            {
                var jsonString = Encoding.UTF8.GetString(bytes);

                                #if UNITY_EDITOR
                UnityEditor.EditorJsonUtility.FromJsonOverwrite(jsonString, objectToOverwrite);
                                #else
                JsonUtility.FromJsonOverwrite(jsonString, objectToOverwrite);
                                #endif
            }
                        #if !DONT_USE_ODIN_SERIALIZER
            //for user-created Components (MonoBehaviours and ScriptableObjects) use OdinSerializer
            //so that also fields that JsonUtility cannot serialize also get copied.
            else
            {
                UnitySerializationUtility.DeserializeUnityObject(objectToOverwrite, ref bytes, ref objectReferences, DataFormat.JSON);
            }
                        #endif
        }
コード例 #3
0
ファイル: ConstantTypes.cs プロジェクト: BrunoS3D/FastPlay
 public void LoadData()
 {
     UnitySerializationUtility.DeserializeUnityObject(this, ref this.serializationData);
     if (current_types == null || current_types.Count == 0)
     {
         current_types = default_types;
     }
 }
コード例 #4
0
ファイル: DashEditorConfig.cs プロジェクト: pshtif/Dash
 void ISerializationCallbackReceiver.OnAfterDeserialize()
 {
     using (var cachedContext = Cache <DeserializationContext> .Claim())
     {
         cachedContext.Value.Config.SerializationPolicy = SerializationPolicies.Everything;
         UnitySerializationUtility.DeserializeUnityObject(this, ref _serializationData, cachedContext.Value);
     }
 }
コード例 #5
0
ファイル: DashAnimation.cs プロジェクト: pshtif/Dash
 public void DeserializeFromBytes(byte[] p_bytes, DataFormat p_format, ref List <Object> p_references)
 {
     using (var cachedContext = Cache <DeserializationContext> .Claim())
     {
         cachedContext.Value.Config.SerializationPolicy = SerializationPolicies.Everything;
         UnitySerializationUtility.DeserializeUnityObject(this, ref p_bytes, ref p_references, p_format,
                                                          cachedContext.Value);
     }
 }
コード例 #6
0
        void ISerializationCallbackReceiver.OnAfterDeserialize()
        {
            UnitySerializationUtility.DeserializeUnityObject(this, ref serializationData);

            if (_backingUdonBehaviourDump)
            {
                _udonSharpBackingUdonBehaviour = _backingUdonBehaviourDump;
            }
        }
コード例 #7
0
        public static void DeserializeObject <T>(T value, byte[] json, List <UnityEngine.Object> objectReferences)
            where T : UnityEngine.Object
        {
            if (json == null || json.Length == 0)
            {
                return;
            }

            UnitySerializationUtility.DeserializeUnityObject(value, ref json, ref objectReferences, DataFormat.JSON);
        }
コード例 #8
0
        void ISerializationCallbackReceiver.OnAfterDeserialize()
        {
            if (string.IsNullOrEmpty(_serializedJsonString) == false && _serializedJsonString != "{}")
            {
                LoadFullSerializerData();
                _serializedJsonString = "";
                _objectReferences     = new List <UnityEngine.Object>();

                _loadedFullSerializerData = true;
            }

            UnitySerializationUtility.DeserializeUnityObject((UnityEngine.Object) this, ref this.serializationData, (DeserializationContext)null);
        }
コード例 #9
0
        void ISerializationCallbackReceiver.OnAfterDeserialize()
        {
            UnitySerializationUtility.DeserializeUnityObject(this, ref this.serializationData);

            if (this.Hooks == null)
            {
                this.Hooks = new List <AutomatedValidationHook>();
            }
            else
            {
                this.Hooks.RemoveAll(n => n.Hook == null);
            }
        }
コード例 #10
0
        public static void OdinDeserializeInto <T>(this OdinSerializationData data, ref T instance)
        {
            try
            {
                var context = BeginOdinDeserializationContext();

                if (instance is UnityObject uo)
                {
                    UnitySerializationUtility.DeserializeUnityObject(uo, ref data, context);
                }
                else
                {
                    instance = SerializationUtility.DeserializeValue <T>(data.SerializedBytes, data.SerializedFormat, data.ReferencedUnityObjects, context);
                }

                EndOdinDeserializationContext(context);
            }
            catch (ThreadAbortException) { }
            catch (Exception ex)
            {
                throw new SerializationException($"Deserialization into '{instance?.GetType().ToString() ?? "null"}' failed.", ex);
            }
        }
コード例 #11
0
 void ISerializationCallbackReceiver.OnAfterDeserialize()
 {
     UnitySerializationUtility.DeserializeUnityObject(this, ref this.serializationData);
     this.OnAfterDeserialize();
 }
コード例 #12
0
 protected override void OnAfterDeserialize()
 {
     UnitySerializationUtility.DeserializeUnityObject(this, ref serializationData);
     base.OnAfterDeserialize();
 }
コード例 #13
0
 public void OnAfterDeserialize()
 {
     UnitySerializationUtility.DeserializeUnityObject(this, ref serializationData);
 }
コード例 #14
0
 public void LoadData()
 {
     UnitySerializationUtility.DeserializeUnityObject(this, ref this.serialization_data);
     //Debug.Log("LoadData");
 }
コード例 #15
0
ファイル: GraphAsset.cs プロジェクト: BrunoS3D/FastPlay
 public void LoadData()
 {
     UnitySerializationUtility.DeserializeUnityObject(this, ref this.serialization_data);
     FixNullGraphInstace(!is_ready);
     is_ready = true;
 }