unity3D使用C#遍历场景内所有元素进行操作
来源:互联网 发布:autocad2008软件下载 编辑:程序博客网 时间:2024/06/04 18:07
最近入门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()获取。
最后测试成功,按下按钮所有怪物都清空。
阅读全文
0 0
- unity3D使用C#遍历场景内所有元素进行操作
- Unity3D 场景与C# Control进行结合
- C# WF 遍历获取容器内的子元素并进行重新排序
- C#遍历枚举类型的所有元素
- unity3D C#的反射使用场景
- js数组循环遍历数组内所有元素
- js数组循环遍历数组内所有元素的方法
- JS数组循环遍历数组内所有元素的方法
- matlab 条件删除某元胞元素时不能使用for,而应该使用while进行遍历所有元胞
- 遍历页面内所有一类控件并做相关操作
- hashmap遍历所有元素
- 所有元素遍历
- unity3d场景搭建常用操作
- 遍历页面内所有按钮
- 遍历页面内所有按钮
- [BCB] 遍历界面所有元素
- JAVA遍历Map所有元素
- JAVA遍历Map所有元素
- 软件测试技术lab2——Selenium上机实验
- jquery实现form表单提交后局部刷新页面的多种方法
- 利用ajax短轮询+php与服务器交互制作简易即时聊天网站
- 如何把php项目部署到阿里云服务器window server2012__含公网ip访问时jquery/ajax失效解决办法
- C#简单实现读取txt文本文件并分页存储到数组
- unity3D使用C#遍历场景内所有元素进行操作
- Google Kickstart在线测试规则以及注意事项
- C#窗体间传值简单小例子
- c#解析json字符串处理(最清晰易懂的方法)
- 异步编程一 初探 Javascript Promise
- 1024. 科学计数法 (20)
- IDLE设置字体大小
- 二、springmvc前后台交互(转)
- 【主席树模板】题