unityphp foreach遍历数组可以遍历隐藏物体吗

不使用递归,怎样遍历unity的GameObject? - 知乎20被浏览2507分享邀请回答GameObject.FindGameObjectsWithTag
然后设置tag来找0添加评论分享收藏感谢收起class Ret
public Ret(Transform c,Transform p){child =parent =}
void Find_b(Transform parent)
Stack&Ret& sk = new Stack&Ret&;
Transform child = parent[0],p =
if(child!=p.end())
if(child.name =="b")
GetPath (child);
Debug.Log(path+"b");
path = "";
if(child.childCount&0)
sk.push(new Ret(child,p));
child = child[0];
if(child==p.end())
if(!sk.isEmpty())
Ret r = sk.pop();
child = r.
用个栈保存一下中断时候的状态,C#已经忘得差不多了,领会精神。这个结构本来就是一个递归结构,用递归遍历会方便的多。11 条评论分享收藏感谢收起查看更多回答2221人阅读
Unity技术(219)
应用户提问 也给大家分享一下 可以查找某个物体下无限层级的子物体名称 并返回该子物体&
以下是核心函数  &
把这个函数放到你的代码中 check代表你要查询的物体 name为名称 如return GetTransform(transform,&bone12&);&
使用2楼的办法&
Transform GetTransform(Transform check,string name)&
& foreach (Transform t in check.GetComponentsInChildren&Transform&())&
& & if(t.name==name){}&
& & GetTransform(t,name);&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1050247次
积分:11471
积分:11471
排名:第1399名
转载:717篇
评论:64条
(5)(4)(2)(1)(3)(2)(2)(1)(1)(1)(1)(4)(2)(3)(3)(7)(1)(3)(1)(2)(2)(7)(9)(5)(5)(55)(31)(13)(10)(20)(36)(41)(58)(6)(2)(76)(16)(20)(50)(20)(5)(65)(42)(81)(4)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'[Unity2D]隐藏/显示物体 - linzheng - 博客园
Just have a little faith.
&&& 在Unity里面我们创建了一个GameObject放在Hierarchy视图上,如果要隐藏该物体可以通过Inspector视图来设置,最顶上的选项,取消选中则隐藏物体。
&&& 当然在实际的游戏编程中,往往是需要通过脚本来控制物体的隐藏和显示的,下面来看看如何通过代码的方式来实现:
一、设置Renderer状态
在游戏的开发中,所有能够被渲染的物体都包含有一个Renderer组件,使用它可以将物体渲染到屏幕上,那么如果禁用了这一组件的话,自然也就实现了物体的隐藏。
gameObject.renderer.enabled&:是控制一个物体是否在屏幕上渲染或显示& 而物体实际还是存在的 只是想当于隐身 而物体本身的碰撞体还依然存在的
using UnityE
using System.C
public class test : MonoBehaviour {
void Start(){
void OnGUI(){
//renderer control
if(GUILayout.Button("display")){
MeshRenderer[] marr = target.GetComponentsInChildren&MeshRenderer&(true);
foreach(MeshRenderer m in marr){
m.enabled = true;
if(GUILayout.Button("hide")){
MeshRenderer[] marr = target.GetComponentsInChildren&MeshRenderer&(true);
foreach(MeshRenderer m in marr){
m.enabled = false;
二、设置Active
gameObject.active&:是否在场景中停用该物体&& 在你gameObject.active =false中 则你在场景中用find找不到该物体,如果该物体有子物体 你要用SetActive(false) 来控制是否在场景中停用该物体(递归的)
void EnableDisable(GameObject what, bool activate)
#if UNITY_3_5
what.SetActiveRecursively(activate);
what.SetActive(activate);
三、设置Layer
假设现有Layer为:
Default = 0,TransparentFX = 1,Ignore Raycase = 2,Water = 4,MyLayer = 8.
设置相机Camera的Culling Mask为:Default+TransparentFX+Ignore Raycase+Water.
那么当设置物体的Layer为MyLayer时候,物体的Layer层在当前相机被忽略,也就相当于隐藏。具体代码为:
using UnityE
using System.C
public class test : MonoBehaviour {
void OnGUI () {
if(GUILayout.Button("Display")){
gameObject.layer = LayerMask.NameToLayer("Default");
if(GUILayout.Button("Hide")){
gameObject.layer = LayerMask.NameToLayer("MyLayer");
随笔 - 369
评论 - 934

我要回帖

更多关于 unity 遍历所有物体 的文章

 

随机推荐