c# - 如何在 C# 脚本中创建预制变体?

标签 c# unity3d

我正在尝试 Unity 的新预制工作流程。我想以编程方式在我已经创建的预制件上创建预制件变体。我正在使用 Unity 2018.3.0b7。如何才能做到这一点?

最佳答案

PrefabUtility.SaveAsPrefabAsset 函数用于创建预制变体。请注意,您只能在编辑器中创建预制件和预制件变体,而不能在构建中创建。要创建预制变体,您首先必须使用 PrefabUtility.InstantiatePrefab 实例化预制,然后您可以使用 PrefabUtility.SaveAsPrefabAsset 函数来创建变体。

从文件加载预制件或获取对原始预制件的引用:

GameObject prefabRef 
 = (GameObject)AssetDatabase.LoadMainAssetAtPath("Assets/Prefabs/YourPrefabName.prefab");

以编辑器方式实例化预制件

GameObject instanceRoot = (GameObject)PrefabUtility.InstantiatePrefab(prefabRef);

创建预制变体

GameObject pVariant = PrefabUtility.SaveAsPrefabAsset(instanceRoot, "Assets/Prefabs/PrefabOutputName.prefab");

清理实例化对象

GameObject.DestroyImmediate(instanceRoot);

注意:

您需要 Unity 2018.3b 及更高版本才能创建预制变体。

关于c# - 如何在 C# 脚本中创建预制变体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53095501/

相关文章:

c# - 从 C# 应用程序调用 ASP.net Web 服务

c# - BodyFrameReader.AcquireLatestFrame 总是返回 null

c# - 考虑为游戏开发切换语言?我是不是该?

c# - SceneManager.SceneLoaded 签名问题

c# - 究竟如何使用 array.where?

c# - 从 C# 项目中的文件夹获取许可证文件

c# - 代码隐藏中的 WPF UserControl 动画不适用于 ContentPresenter

c# - 具有多项选择的内联 if-else 语句

c# - Unity transform.position 无法正常工作

c# - 此类线程安全吗?