克隆游戏对象
在游戏中,可能会连续出现相同的游戏对象来实现游戏的某种效果,如发射子弹。这就要用上克隆游戏对象,克隆游戏对象与创建游戏对象的呈现方式是完全一样的,但在执行效率上来讲,克隆游戏对象的效率要高。
在克隆游戏对象的代码中,需要使用Instantiate( )方法来克隆游戏对象。不废话,先上代码。
//球体对象
var obj : GameObject;
function Start()
{
//获得球体对象
obj = GameObject.Find("Sphere");
}
function OnGUI()
{
if(GUILayout.Button("开始克隆实例",GUILayout.Height(50))){
//克隆一个obj的实例
var clone :GameObject = Instantiate(obj, obj.transform.position, obj.transform.rotation);
//8秒后销毁该实例,
Destroy (clone, 8);
}
}
点击开始克隆实例:
Instantiate()方法返回值就是克隆后的游戏对象。
destroy()方法第一个参数为需要销毁的游戏对象,第二个表示延迟多少秒后销毁。
动态为游戏对象添加脚本组件
在程序中,可使用AddComponent( )为某个游戏对象添加脚本组件。将需添加的脚本作为参数传入被添加脚本的游戏对象。
var obj : GameObject;
function Start () {
//获得立方体对象
obj = GameObject.Find("Cube");
}
function OnGUI(){
if(GUILayout.Button("给立方体添加脚本组件",GUILayout.Height(50))){
//添加cube_script脚本
if(obj)
obj.AddComponent("cube_script");
}
if(GUILayout.Button("删除立方体脚本组件",GUILayout.Height(50))){
//删除cube_script脚本
if(obj)
Destroy (obj.GetComponent ("cube_script"));
}
if(GUILayout.Button("立即删除立方体对象",GUILayout.Height(50))){
//删除立方体对象
if(obj)
Destroy (obj);
}
if(GUILayout.Button("5秒后删除立方体对象",GUILayout.Height(50))){
//5秒后删除立方体对象
if(obj)
Destroy (obj,5);
}
}
function Start(){
Debug.Log("脚本添加成功");
}
function OnDestroy (){
Debug.Log("脚本删除成功");
}
运行:
控制面板信息:
点击添加脚本后多出一个相同脚本:
点击立即删除正方体: