基本上是否有一种实际的节省时间的方法来创建一个函数,让您创建一个由函数参数指定的GameObject?在Unity中创建游戏对象的自动方法?
喜欢:
public void thing_maker(string gameobject_name, string sprite_name, string rg_body_name)
基本上是否有一种实际的节省时间的方法来创建一个函数,让您创建一个由函数参数指定的GameObject?在Unity中创建游戏对象的自动方法?
喜欢:
public void thing_maker(string gameobject_name, string sprite_name, string rg_body_name)
这个例子应该做你所需要的。 它要求您有一个名为的资源文件夹,并且要加载的精灵将位于该文件夹内。
另一种选择是做GameObject go = Instantite(SomePrefabName) as GameObject
insigned new GameObject()
,如果你有一个预制好的,你只想改变一些组件的值。
祝你好运。
public GameObject thing_maker(string gameobject_name, string sprite_name, string rg_body_name)
{
GameObject go = new GameObject(gameobject_name);
SpriteRenderer sr = go.AddComponent<SpriteRenderer>();
sr.sprite = Resources.Load<Sprite>(sprite_name);
Rigidbody rb = go.AddComponent<Rigidbody>();
/* now if you want to change values of the components you can just do it
by accesing them directly. for instance: rb.isKinematic = true; will
change the isKinematic value of this rigidbody to true. */
return go;
}
在我看来,你可以尝试这样的事:
public void ThingMaker(string gameobject_name, Sprite spriteToDraw) {
GameObject newObj;
newObj= new GameObject(gameobject_name);
newObj.AddComponent<Rigidbody2D>();
newObj.AddComponent<SpriteRenderer>();
newObj.GetComponent<SpriteRenderer>().sprite = spriteToDraw;
}
是的,你可以调用'新游戏物体()'(这将创建一个空白的,空的游戏物体)到你可能会添加组件(通过'AddComponent()')或调用['UnityEngine.Object.Instantiate(gameObjectToCopy)'](http://docs.unity3d.com/ScriptReference/Object.Instantiate.html)创建一个副本。您也可以在运行时实例化预制件。一些详细的信息在这里:http://docs.unity3d.com/Manual/InstantiatingPrefabs.html –
好,但你可以指定'GameObject()'的名字从一个参数'thing_maker()'?就像调用'thing_maker(go_player,sprt_player,rgdbdy_player)'将创建一个名为go_player的游戏对象,一个名为sprt_player的精灵等。 – novasniff
当然,只需检查[文档](http://docs.unity3d.com/ScriptReference/游戏对象-ctor.html)。您必须自己添加组件或实例化预制件,但是阻碍您尝试实施此方法的原因是什么? – 31eee384