U3D在脚本中通过预设来生成物体的方式是使用Instantiate(GameObject, Vector3, Quaternion)方法,具体可以去百度。
此方法第一个参数是预设。
这里有两种方法把预设导入到代码中:
一种 是在代码里声明 public GameObject goPrefab,并通过U3D的图形界面把预设与此goPrefab绑定。
二种 是把预设放置在 Resources文件夹中,在使用时,直接在代码中 Resources.Lad<GameObject>("goPrefab")。
第一种加入方式有个隐蔽的问题:当我们在使用 Destroy函数删除掉生成的物体时,会对预设造成影响,通常是使预设上的自定义组件(比如脚本,或者加在其上的组件)丢失。
在运行时导致无法发现对象的异常。
因此在会进行Destroy操作的脚本中,应当使用第二种克隆预设的方法。
另外,在Destroy某一物体时,我们要注意清除掉 自己定义的Messenger等系统中,此物体注册的引用,比如Listener等等,系统是不会自动帮你做这些的。
否则会导致空对象却在接收你自己定义系统的回调,发生异常。