Unity零碎

    科技2024-07-25  18

    1.上层UI需要勾选Raycast Target才可以遮挡下层UI(如果是子物体就不受影响,比如一个button是Image的子物体,Image勾选了Raycast Target,不会遮挡按钮) 2.xLua中Lua的表映射到List只能映射没有key的元素 3.xlua中访问c#泛型方法,封装的扩展类需要是public static的,方法也需要是静态的

    [LuaCallCSharp] public static class ExtendedMethod { public static Rigidbody AddComponentRigidbody(this GameObject obj) { return obj.AddComponent<Rigidbody>(); } [LuaCallCSharp] public static List<Type> luaCallCSharpList=new List<Type>() { typeof(GameObject), typeof(Animator) }; } --访问泛型方法 local go=CS.UnityEngine.GameObject.Find("GameObject") --CS.ExtendedMethod.AddComponentRigidbody(go) go:AddComponentRigidbody()

    4.检测是否点击到UI层,比如2D游戏中点击到UI,就不进行某些操作

    private bool IsPointerOverGameObject(Vector2 mousePosition) { //创建一个点击事件 PointerEventData eventData = new PointerEventData(EventSystem.current); eventData.position = mousePosition; List<RaycastResult> raycastResults = new List<RaycastResult>(); //向点击位置发射射线,检测是否点击UI EventSystem.current.RaycastAll(eventData, raycastResults); return raycastResults.Count > 0; }

    5.一个类的私有属性可以访问要在Lua中添加xlua.private_accessible(CS.HotFix) 6.UI当中添加Canvas Group组件,其中Blocks Raycasts取消勾选即可禁止UI交互 7.当基类继承了 MonoBehaviour时,子类中的若是有需要,定义Unity的事件方法如Start,Update需要加上override,基类则需要virtual,至于为什么继承自MonoBehaviour的类不需要重写,参考这里 8.继承自MonoBehaviour的类对象内容无法序列化

    Processed: 0.039, SQL: 8