unity3D使用C#遍历场景内所有元素进行操作
2017-07-14 17:38
781 查看
最近入门Unity3D,跟着教程做完了survival射击游戏,就想加一个功能,就是按一个按钮屏幕上的怪物都清空。
如图右下角所示。
我的方法是赋予所有怪物一个标签Tag,然后根据标签销毁Gameobject。
百度了好一阵子怎么遍历所有元素,然而大部分都是说怎么遍历子元素或者说留下父元素之类的,可是我要的是操作所有父元素。
最后终于找到了方法,在这里记录一下。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ClearAllEnemy : MonoBehaviour { public Button ClearBtn; GameObject[] obj; //开头定义GameObject数组 void Start() { //为按钮添加事件 ClearBtn.onClick.AddListener(delegate () { ClearEnemy(); }); } void ClearEnemy() { obj = FindObjectsOfType(typeof(GameObject)) as GameObject[]; //关键代码,获取所有gameobject元素给数组obj foreach (GameObject child in obj) //遍历所有gameobject { //Debug.Log(child.gameObject.name); //可以在unity控制台测试一下是否成功获取所有元素 if (child.gameObject.tag == "enemy") //进行操作 { child.gameObject.SetActive(false); Destroy(child.gameObject); } } } }
关键代码就是这两行:
GameObject[] obj; //定义
obj = FindObjectsOfType(typeof(GameObject)) as GameObject[]; //获取
这个方法是Object类的静态方法,在所有继承自他的类中都可以直接使用。它返回的是物体列表,所以需要数组。后面的as GameObject[]是不能省略的,如果是其他类型,那就as 其他类型[](格式:as Type[])。方法的小括号里传入的是类的Type对象,所以用typeof()获取。
最后测试成功,按下按钮所有怪物都清空。
相关文章推荐
- unity3D使用C#遍历场景内所有元素进行操作
- matlab 条件删除某元胞元素时不能使用for,而应该使用while进行遍历所有元胞
- 实验心得:C#中当使用foreach对集合进行遍历时,不得改变集合的大小和元素的值
- 定义一个100长度的整型数组,使用rand函数生产随机数对每个元素进行赋值,顺序遍历该数组,输出所有值大于50的数。输出格式例子为:
- Oracle 远程访问配置 在 Windows Forms 和 WPF 应用中使用 FontAwesome 图标 C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素” C#[Win32&WinCE&WM]应用程序只能运行一个实例:MutexHelper Decimal类型截取保留N位小数向上取, Decimal类型截取保留N位小数并且不进行四舍五入操作
- 定义一个100长度的整型数组,使用rand函数生产随机数对每个元素进行赋值,顺序遍历该数组,输出所有值大于50的数
- 使用C#和Excel进行报表开发(五)-操作单元格边框和颜色
- 使用C#和Excel进行报表开发(五)-操作单元格边框和颜色
- 使用C#和Excel进行报表开发(二)-操作统计图(Chart)
- 使用C#对XML进行增删改查操作
- C#中使用API(SHFileOperation)进行文件操作,特别说明了回收站相关参数
- C#中使用SQL的BULK语句,进行大数据量操作
- C#中使用API(SHFileOperation)进行文件操作,特别说明了回收站相关参数
- 使用C#和Excel进行报表开发(五)-操作单元格边框和颜色 【转】
- C#遍历系统所安装的打印机,使用WMI方式获取打印机的所有属性
- C#遍历系统所安装的打印机,使用WMI方式获取打印机的所有属性
- 使用C#和Excel进行报表开发(二)-操作统计图(Chart)
- 使用C#和Excel进行报表开发(二)-操作统计图(Chart)
- 使用C#和Excel进行报表开发(二)-操作统计图(Chart)
- 使用C#和Excel进行报表开发(五)-操作单元格边框和颜色