unity3D使用C#遍历场景内所有元素进行操作
最近入门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#遍历场景内所有元素进行操作的更多相关文章
- Unity3d 动态加载场景物件与缓存池的使用
聊聊Unity3d动态加载场景物件那些事儿. 众所周知,在策划或美术设计完游戏场景地图后,一个场景中可能会存在成千上万个小的物件,比如石头,木箱子,油桶,栅栏等等等等,这些物件并不是游戏中的道具,仅仅 ...
- 为什么for不能有序遍历数组的所有元素?(Array的设计原理)
这个题目略微浅显,但却不易讲明白.如果我告诉你,我们不能以任何代码保证可以有序遍历出一个数组的所有元素,你肯定会反驳我,因为使用for明明就可以啊!但其实不是. 一.为什么FOR不能保证遍历所有? 代 ...
- C++进阶 STL(3) 第三天 函数对象适配器、常用遍历算法、常用排序算法、常用算数生成算法、常用集合算法、 distance_逆序遍历_修改容器元素
01昨天课程回顾 02函数对象适配器 函数适配器是用来让一个函数对象表现出另外一种类型的函数对象的特征.因为,许多情况下,我们所持有的函数对象或普通函数的参数个数或是返回值类型并不是我们想要的,这时候 ...
- MongoDB 系列(二) C# 内嵌元素操作 聚合使用
"_id" : "639d8a50-7864-458f-9a7d-b72647a3d226","ParentGuid" : "00 ...
- 解决行内块元素(inline-block)之间的空格或空白问题
一.问题产生 由于html代码格式化后,标签会缩进或者换行.由于浏览器默认处理导致元素在页面显示中出现单个空格问题,尤其在行内或者行内块元素布局时影响比较明显 例如: 代码 页面显示 二.解决方案 这 ...
- Css中的两个重要概念:块状元素和内联元素
一.display:block display:block就是将元素显示为块级元素,一般是其他元素的容器,可容纳内联元素和其他块状元素,块状元素排斥其他元素与其位于同一行,宽度(width)高度(he ...
- 为何img、input等内联元素可以设置宽、高
元素是文档结构的基础,在CSS中,每个元素生成了一个包含了元素内容的框(box,也译为“盒子”).但是不同的元素显示的方式会有所不同,例如<div>和<span>就不同,而&l ...
- html标签分两种:块状元素和内联元素
块状元素一般是其它元素的容器,可以容纳内联元素和其它块状元素,独占一行,宽度和高度起作用.如div,p等标签属于块状元素. 内联元素只能容纳文本和其它内联元素,可与其它内联元素位于同一行, ...
- 块状元素(div)与内联元素(span)
<pre class="html" name="code"><html xmlns="http://www.w3.org/1999/ ...
随机推荐
- Qt 学习之路 2(32):贪吃蛇游戏(2)
Qt 学习之路 2(32):贪吃蛇游戏(2) 豆子 2012年12月27日 Qt 学习之路 2 55条评论 下面我们继续上一章的内容.在上一章中,我们已经完成了地图的设计,当然是相当简单的.在我们的游 ...
- 浏览器端 禁止 html 使用后退 或者替换后退功能..
知乎大佬的代码: 作者:独夜行 链接:https://www.zhihu.com/question/40511430/answer/166467343 来源:知乎 著作权归作者所有.商业转载请联系作者 ...
- liunx php 安装 redis 扩展
切换到安装目录: cd /usr/local/ 下载php redis扩展:wget http://pecl.php.net/get/redis-2.2.8.tgz 更改名称压缩包名称: mv re ...
- ICEM二维网格
非结构网格 结构网格 拓扑 拓扑完建立part边界条件,然后创建block 拓扑完后进行边界条件关联 全局网格设置
- [CSU1911]Card Game(FWT)
[vjudge-CSU1911] FWT_or #include<cstring> #include<iostream> #include<algorithm> # ...
- 应大数据时代而写了个磁力搜索的网页- WWW.MOVIH.COM 磁力
应大数据时代而写了个磁力搜索的网页- 索马里搜索磁力 http://www.,movih.com/ BT磁力示例网站:WWW.MOVIH.COM 采用分布式架构: JAVA系统:JBOSS7+EJB3 ...
- java.math.BigDecimal cannot be cast to java.lang.String
从数据库总查询出的count(*) 函数统计的值,类型转换方法: Map<String,Integer> map = new HashMap<String,Integer>() ...
- 114th LeetCode Weekly Contest Array of Doubled Pairs
Given an array of integers A with even length, return true if and only if it is possible to reorder ...
- Spring4 笔记
1. 通过 xml 赋值给 bean 1) 通过set 方法赋值 (必须要有空的构造方法) <bean id="user" class="com.test.User ...
- [转] Java运行时动态生成class的方法
[From] http://www.liaoxuefeng.com/article/0014617596492474eea2227bf04477e83e6d094683e0536000 廖雪峰 / 编 ...