我想在C#中创建一个函数,它可以从我的预制文件夹中选择一个预制件,将它添加到游戏中,并允许我设置该预制件的属性(如果需要)。该功能我现在有:Unity2D C# - 如何创建一个通用的预制实例化器?
public void loadObject(string objReference, float xPos, float yPos){
Instantiate(Resources.Load<GameObject>(objReference),xPos,yPos);
//I want access to the prefabs properties
}
我也可以调用函数从任何地方在我的课加载预制:
loadObject ("Prefab/BeamPlatform", this.transform.position.x, this.transform.position.y);
当这只是我传递给函数的字符串,它工作:
public void loadObject(string objReference){
Instantiate(Resources.Load<GameObject>(objReference));
}
//
loadObject ("Prefab/BeamPlatform");
但只要我尽量控制预制的位置,我得到了几个错误:
我只是不正确地传递参数?我究竟做错了什么?这实际上可能吗?我已经习惯了在AS3这样做,这是一样简单:
public function loadObject(objClass, xPos:Number, yPos:Number){
var obj = new objClass();
obj.x = xPos;
obj.y = yPos;
obj.otherProperty = ;
}
我试图避免设立一个类级别的变量并拖动到预制它的检查。我觉得这会限制我的选择,但我正在听任何建议。
Here's what it looks like when it works with just a string passed