个人unity学习手册

1.寻找某节点下的指定条件的子节点:
Attention:采用Foreach的遍历方法会把自己算计去哦,可以使用try-catch。

foreach (var VARIABLE in Cube.GetComponentsInChildren<Biaoji1>())//寻找挂载了Biaozhi1脚本的子节点
        {
            Debug.Log(VARIABLE.name);
        }

上图中Cube和Cube4,5,6没有挂载Biaoji1的脚本
上图中Cube和Cube4,5,6没有挂载Biaoji1的脚本
打印结果:
在这里插入图片描述
通过这种迭代器遍历(暂不清楚是深度还是广度遍历)的方法可以遍历到挂载指定组件的子物体包括自己,通俗讲就是从包括自己和所有Active为true的子节点的集合中寻找出含有指定组件的节点,如果还要添加tag和name等筛选,可以在foreach中添加相关的if语句作为筛选规则。
2.获取当前节点和父节点的相对路径:

private string GetRoute(Transform transform, string splitter = "/")
    {
        string result = transform.name;
        var parent = transform.parent;
        while (parent.parent != null)
        {
            result = $"{parent.name}{splitter}{result}";
            parent = parent.parent;
        }
        return result;
    }
//通过下面的语句可以直接找到对应的子节点
transform.Find(sPath)

3.根据路径直接寻找到子节点
实验来看,路径直接寻找速度比foreach快n倍。

Transform t = Cube.Find("Cube (6)");

4.测试函数的执行时长:

System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start(); //  开始监视代码
//____________________代码
stopwatch.Stop(); //  停止监视
TimeSpan timeSpan = stopwatch.Elapsed; //  获取总时间
double hours = timeSpan.TotalHours; // 小时
double minutes = timeSpan.TotalMinutes;  // 分钟
double seconds = timeSpan.TotalSeconds;  //  秒数
double milliseconds = timeSpan.TotalMilliseconds;  //  毫秒数      

5.Unity中,层级遮罩是通过位掩码来实现,unity使用int32来表示层级,而int占 4 字节,表示 32 位整数(0与1的组合),这就是为什么会有32个层级的原因。Layer可用于遮罩,Raycast检测,相机渲染等。

   int bitmask = LayerMask.GetMask("bg");
   //十进制表示
    Debug.Log(bitmask);
   //输出:256
   //二进制表示
   Debug.Log(Convert.ToString(bitmask, 2).PadLeft(32, '0'));  
   //输出:00000000000000000000000100000000
   
   //等同于
   int bitmask = 1<< 8;
   //x>>1;//相当于x/=2
   //x<<1;//相当于x*=2
   //x>>2;//x/=4
   //x<<2;//x*=4
   //x>>3;//x/=8
   //x<<3;//x*=8
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值