代码部分。注:不包含Everything和Nothing
Layer层级由int转stringstring aa = LayerMask.LayerToName();
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
void Start()
{
Camera camera = this.gameobject.GetComponent<Camera>();
if(camera.cullingMask == 1)
{
Debug.Log("Camera.cullingMask = Everything");
}
else if(camera.cullingMask == 0)
{
Debug.Log("Camera.cullingMask = Nothing");
}
else
{
List<int> indexs = Get_Camera_Look_Layer(camera);
for (int i = 0; i < indexs.Count; i++)
{
//Debug.Log("Camera.cullingMask have " + indexs[i]);
Debug.Log("Camera.cullingMask have " + LayerMask.LayerToName(i));
}
}
}
/// <summary>
/// 整数转二进制(32位)的方法
/// </summary>
/// <param name="x">整数</param>
/// <returns></returns>
public string Convert(int x)
{
char[] bits = new char[32];
int i = 0;
for (int k = 0; k < 32; k++)
{
bits[k] = '0';
}
while (x != 0)
{
bits[i++] = (x & 1) == 1 ? '1' : '0';
x >>= 1;
}
string str = "";
for (int k = 0; k < bits.Length; k++)
{
str += bits[k];
}
return str;
}
/// <summary>
/// 获取到摄像机看到的的layer层级
/// </summary>
/// <param name="camera">摄像机</param>
/// <returns></returns>
public List<int> Get_Camera_Look_Layer(Camera camera)
{
int camera_layer = camera.cullingMask;
string str = Convert(camera_layer);
char[] chars = str.ToCharArray();
List<int> layers = new List<int>();
for (int i = 0; i < 32; i++)
{
if (chars[i] == '1')
{
layers.Add(i);
}
}
return layers;
}