编辑器相关
- [ExecuteInEditMode]
可以让组件在非运行的时候也调用Awake,Start()等生命周期方法 - [RuntimeInitializeOnLoadMethod]
在静态方法上加上 [RuntimeInitializeOnLoadMethod] ,可以让这个方法在游戏开始时被回调
public class GameRoot
{
[RuntimeInitializeOnLoadMethod]
private static void GameStar()
{
Debug.Log("------Game Star------");
}
//运行游戏后即可看到Game Star打印出来。
//注意:方法必须为static才能被回调。类可以不继承MonoBehaviour,不影响
}
- 遍历Enum
public enum PanelLayer
{
Low,
Mid,
High,
Top,
}
for 遍历
Array panelArray = Enum.GetValues(typeof(PanelLayer));
for (int i = 0; i < panelArray.Length; i++)
{
PanelLayer item = (PanelLayer) panelArray.GetValue(i);
Debug.Log(item.ToString() +" "+(int)item);
}
foreach 遍历
foreach (PanelLayer item in Enum.GetValues(typeof(PanelLayer)))
{
Debug.Log(item.ToString() +" "+(int)item);
}
-
字典根据下标获取数据
平常list可以用 list[i]来获取元素,但字典没办法用[]来获取item。这时可以用
var data = dict.ElementAt(i); 来获取 -
层级检测
- 根据层级名字获取所在层级,比如获取地板的层级:
LayerMask.NameToLayer("Ground"); - 然后检测主角是否在地板:从主角脚下发射一条射线,只与Ground层检测
bool isHit = Physics2D.Raycast(transform.position, Vector2.down, 0.1f,
LayerMask.NameToLayer(("Ground"); - 但这样会检测不到,后来才知道得把:
LayerMask.NameToLayer(Layer.Ground);
改成
1 << LayerMask.NameToLayer(Layer.Ground);
层级是用位运算的。假设想与地板外的所有层级检测,可以这样写
~(1 << LayerMask.NameToLayer(Layer.Ground))
- 根据层级名字获取所在层级,比如获取地板的层级:
-
图集的Generate Mip Maps选项
image.png这个勾选后,会生成多份不同大小的图,然后根据相机距离决定使用那张图。
表现出来的效果就是包体积会变大,UI图集勾选后,有时会变得模糊。
一般说来UI图集是不要勾选这个的,一些3D模型或场景的贴图可以勾选
网友评论