public static void Duplicate <TComponent>(TComponent[] targets) where TComponent : Component
        {
            for (int n = targets.Length - 1; n >= 0; n--)
            {
                                #if DEV_MODE && PI_ASSERTATIONS
                Debug.Assert(targets[n] != null, "Duplicate - " + typeof(TComponent) + " " + (n + 1) + " / " + n + " was null!");
                                #endif

                                #if UNITY_EDITOR
                UnityEditorInternal.ComponentUtility.CopyComponent(targets[n]);
                UnityEditorInternal.ComponentUtility.PasteComponentAsNew(targets[n].gameObject);
                                #else
                var    source = targets[n];
                var    clone  = source.gameObject.AddComponent(source.GetType());
                byte[] bytes  = null;
                System.Collections.Generic.List <UnityEngine.Object> references = null;
                                #if !DONT_USE_ODIN_SERIALIZER
                Sisus.OdinSerializer.UnitySerializationUtility.SerializeUnityObject(source, ref bytes, ref references, OdinSerializer.DataFormat.Binary, true);
                Sisus.OdinSerializer.UnitySerializationUtility.DeserializeUnityObject(clone, ref bytes, ref references, OdinSerializer.DataFormat.Binary);
                                #else
                PrettySerializer.SerializeUnityObject(source, ref bytes, ref references);
                PrettySerializer.DeserializeUnityObject(bytes, clone, ref references);
                                #endif
                                #endif
            }
        }
Пример #2
0
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            string serializedString;

            if (value == null)
            {
                serializedString = "null";
            }
            else
            {
                List <Object> objectReferences = null;
                serializedString = PrettySerializer.SerializeUnityObject(value as Object, ref objectReferences);
            }

            writer.WriteRawValue(serializedString);
        }