创建GameObject并保存在层次结构中

时间:2015-03-10 23:17:14

标签: c# unity3d

我想从脚本创建gameObjects(文本,3d东西等)并将它们保存在场景中。 例如:如果我使用这样的脚本,

public class ExampleClass : MonoBehaviour
{
    public void Start()
    {
        GameObject plane = GameObject.CreatePrimitive(PrimitiveType.Plane);
    }
}
""飞机"将暂时添加到层次结构中(刚开始按下后)。

我正在寻找一些方法来自动创建大量的游戏对象(通过脚本,api等)并将它们保存在层次结构中。

2 个答案:

答案 0 :(得分:1)

你想在停止场景之后谈论持久性GameObject。

在场景层次结构中弹出gameObject实例并在场景播放和停止后停留的唯一可能是使用CustomEditors

你必须要知道,统一编辑器是基于Unity Gui的,因此你可以轻松添加按钮,让它运行一些由你编写的特定脚本,在windows菜单中(例如)。

但您也可以自定义鼠标右键单击场景层次结构,以允许人们创建允许的gameObject的实例,并将此创建的实例直接添加到之前点击过的游戏对象的子项中等等...

或者创建自己的工具脚本,并将其作为组件添加到Gameobject上,并使用特定的布局并由Unity Editor呈现。

一步一步地使用customEditor:

1 - 在Editor根项目层次结构

中创建名为Assets/的文件夹

2 - 创建一个像bellow这样的脚本,它使用对UnityEditor的引用,并添加你可以使用注释的属性。最后,您必须使您的类从编辑器类扩展。

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
// uncomment this line bellow if you want to create customEditor script which you will be able to use on gameObject as component.
// typeof give script type , it's a script created as component and extending from Monobehaviour, he contain value etc.. he could be manipulated from this CustomEditor script via button who call Methodes.
//[CustomEditor(typeof(YourScriptComponent))]

public class MyNewCustomEditor : Editor
{}

有关customEditors脚本的更多示例,请查看统一文档:http://docs.unity3d.com/ScriptReference/Editor.html

3 - 创建要使用的方法并调出场景播放模式。 你必须在OnInspectorGUI()函数中创建按钮,它将调用你的方法来实例化一些GameObjects里面的场景。

4 - 警告,要实例化预制件等资源,必须将所需资源放在名为Resources的文件夹中,并在脚本中使用Resources.Load()方法。

请参阅文档以获取更多信息,使用起来非常简单:http://docs.unity3d.com/ScriptReference/Resources.Load.html

希望它会有所帮助,见到你。

答案 1 :(得分:0)

有一个类似的问题over here

您希望制作一个编辑器脚本,然后使用几乎与运行时使用的逻辑相同的逻辑。这是Unity Docs on editor scripts

您可以创建一个C#脚本并将其放在“Editor”文件夹中。如果您希望它作为下拉选项出现在编辑器中,您可以在函数之前输入“[MenuItem(”MyTools / CreateGameObjects“)]”,如另一个Stack Overflow应答中所示。