zoukankan      html  css  js  c++  java
  • Unity 中层的运用

     LayerMask.NameToLayer("UI") ,这是直接获取场景里面已有的层,

    1<<LayerMask.NameToLayer("UI"),这是在发出射线的时候只开启这一个层,

    0<<LayerMask.NameToLayer("UI"),这是在发出射线的时候关闭之一层,

    也可以直接把要关闭或者开启的那一层写出来比如:LayerMask mask = 0 << 3 | 0 << 7;关闭第三和第七层;

    还有这种写法:

    mask = (1 << 5);
    mask = ~mask;

    这个意思是开启所有层只关闭第五层

    在做项目的时候经常会运用到射线检测但是值得注意的是射线检测分为2D和3D,

      void CheckClick()
        {
            if (Input.GetMouseButtonDown(0))
            {
                //mask = (1 << 5);
                //mask = ~mask; 
                //Ray ray = UICamera.currentCamera.ScreenPointToRay(Input.mousePosition);//2D射线检测
                mask = ((0 << 5) | (1<< 9));
                Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//3D射线检测
                RaycastHit hitInfo;
                if (Physics.Raycast(ray, out hitInfo, Mathf.Infinity, mask))
                {
                    string goname = hitInfo.collider.gameObject.name;
                    int layer = hitInfo.collider.gameObject.layer;
                    BwTrace.LogError("已点中了" + goname + ",layer:" + layer + "层....mask.value:" + FormatToBinary(mask.value));
                }
                else
                {
                    BwTrace.LogError("没点中 mask 层....mask.value:" + FormatToBinary(mask.value));
                }
            }
        }
  • 相关阅读:
    ACM-超级楼梯
    clientt.c
    call.c
    answer.c
    aa.c
    client.c
    service.c
    自己动手开发jQuery插件
    apache-commons-net Ftp 进行文件、文件夹的上传下载及日志的输出
    在Eclipse中制作SSH配置文件提示插件
  • 原文地址:https://www.cnblogs.com/WindMan/p/9202790.html
Copyright © 2011-2022 走看看