C# 在运行时编辑后使用预置生成新预置

C# 在运行时编辑后使用预置生成新预置,c#,unity3d,C#,Unity3d,我有简单的脚本和完美的工作,但只有在Unity编辑器中运行。我尝试建立移动,不完整和错误的建设。我使用Unity 2019.3.4。 移动脚本是否有“使用UnityEditor”的替代项 我需要移动脚本。有没有用手机跑步的想法 using UnityEngine; using UnityEditor; using UnityEditor.Callbacks; using System.Collections.Generic; public class Prefabz : MonoBehavio

我有简单的脚本和完美的工作,但只有在Unity编辑器中运行。我尝试建立移动,不完整和错误的建设。我使用Unity 2019.3.4。 移动脚本是否有“使用UnityEditor”的替代项

我需要移动脚本。有没有用手机跑步的想法

using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;
using System.Collections.Generic;

public class Prefabz : MonoBehaviour
{
    public GameObject selObj;

        void Update()
        {
            if (Input.GetMouseButtonDown(0))
            {
                CreatePrefab();
            }
        }

        void CreatePrefab()
        {
            //GameObject[] selObjs = Selection.gameObjects;

                string charName = selObj.name;

                // duplicate
                GameObject newInstance = Instantiate(selObj);
                newInstance.name = charName;

                // now replace the prefab
                string prefabPath = "Assets/trideeScript/" + charName + ".prefab";
                var existingPrefab = AssetDatabase.LoadAssetAtPath(prefabPath, typeof(GameObject));
                if (existingPrefab != null)
                {
                    PrefabUtility.ReplacePrefab(newInstance, existingPrefab, ReplacePrefabOptions.ReplaceNameBased);
                }
                else
                {
                    PrefabUtility.CreatePrefab(prefabPath, newInstance);
                }

                // delete dupe
                DestroyImmediate(newInstance);

                Debug.Log("Prefab'd " + charName + "! \"" + prefabPath + "\"");
        }   
}

在任何平台上都不支持UnityEditor命名空间,但实际编辑器除外。这就是为什么所有编辑器脚本都必须放在“editor”文件夹中的原因,也是为什么如果UNITY编辑器在任何平台上都不受支持,那么最好将任何与编辑器相关的内容保存在预处理器指令
#中,除了实际的编辑器。这就是为什么所有编辑器脚本都必须放在“编辑器”文件夹中的原因,这就是为什么将任何与编辑器相关的内容保存在预处理器指令中是一种好的做法。。。如何为移动设备运行它?提前感谢..预置与图像、声音或可编写脚本的对象实例是相同的资源。游戏内部有编译,编译后游戏不能自行修改。因此,您不能这样做。相反,您可以使用unity的JSONUtility将对象(例如GameObject)转换为字符串。然后您可以将该字符串存储到PlayerPrefs中,或作为文件写入HDD。然后,在游戏开始时,您应该读取这个字符串,将其反序列化(转换回object)。然后,您可以使用这个对象作为Instantiate()的预置。根据您需要实现什么,有很多选项。您可以使用二进制序列化,而不是文本-它将限制用户手动修改文件。或者你可以上传到你的服务器上。此外,还有一些资产包,用于将新内容交付到已编译的应用程序(但不用于从应用程序导出内容)。感谢您的想法,我将尝试转换为字符串并保存到PlayerPrefs或数据库中。。。非常感谢@Mykhailohmmm。。。如何为移动设备运行它?提前感谢..预置与图像、声音或可编写脚本的对象实例是相同的资源。游戏内部有编译,编译后游戏不能自行修改。因此,您不能这样做。相反,您可以使用unity的JSONUtility将对象(例如GameObject)转换为字符串。然后您可以将该字符串存储到PlayerPrefs中,或作为文件写入HDD。然后,在游戏开始时,您应该读取这个字符串,将其反序列化(转换回object)。然后,您可以使用这个对象作为Instantiate()的预置。根据您需要实现什么,有很多选项。您可以使用二进制序列化,而不是文本-它将限制用户手动修改文件。或者你可以上传到你的服务器上。此外,还有一些资产包,用于将新内容交付到已编译的应用程序(但不用于从应用程序导出内容)。感谢您的想法,我将尝试转换为字符串并保存到PlayerPrefs或数据库中。。。非常感谢@Mykhailo