我想从脚本创建gameObjects(文本,3d东西等)并将它们保存在场景中。 例如:如果我使用这样的脚本,
public class ExampleClass : MonoBehaviour
{
public void Start()
{
GameObject plane = GameObject.CreatePrimitive(PrimitiveType.Plane);
}
}
""飞机"将暂时添加到层次结构中(刚开始按下后)。
我正在寻找一些方法来自动创建大量的游戏对象(通过脚本,api等)并将它们保存在层次结构中。
答案 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应答中所示。