Xlua学习笔记1

Xlua学习笔记1

本人没做过Unity, 应用层的老菜鸟程序。

自己笔记

看代码2天卡在了静态列表,动态列表这边,骚味好像看懂了点记录下。
LuaCallCSharp,CSharpCallLua, BlackList
用一个举例
[LuaCallCSharp]=>LuaCallCSharpAttribute
用反射来获取加了这些标签(特性Attribute)的然后放到一个LuaCallCSharp集合里面,遍历这个集合生成所需要的中间层代码让lua调用,可以给自己的类添加,第三方插件添加。静态列表,动态列表第三方的插件和unity自己的类就是利用这种方式,只不过很多事XLua帮我们做好了看ExampleGenConfig。

//配置的详细介绍请看Doc下《XLua的配置.doc》
public static class ExampleGenConfig
{
//lua中要使用到C#库的配置,比如C#标准库,或者Unity API,第三方库等。
[LuaCallCSharp]
public static List LuaCallCSharp = new List() {
typeof(System.Object),
typeof(UnityEngine.Object),
typeof(Vector2),
typeof(Vector3),
typeof(Vector4),
typeof(Quaternion),
typeof(Color),
typeof(Ray),
typeof(Bounds),
typeof(Ray2D),
typeof(Time),
typeof(GameObject),
typeof(Component),
typeof(Behaviour),
typeof(Transform),
typeof(Resources),
typeof(TextAsset),
typeof(Keyframe),
typeof(AnimationCurve),
typeof(AnimationClip),
typeof(MonoBehaviour),
typeof(ParticleSystem),
typeof(SkinnedMeshRenderer),
typeof(Renderer),
typeof(WWW),
typeof(Light),
typeof(Mathf),
typeof(System.Collections.Generic.List),
typeof(Action),
typeof(UnityEngine.Debug)
};

//C#静态调用Lua的配置(包括事件的原型),仅可以配delegate,interface
[CSharpCallLua]
public static List<Type> CSharpCallLua = new List<Type>() {
            typeof(Action),
            typeof(Func<double, double, double>),
            typeof(Action<string>),
            typeof(Action<double>),
            typeof(UnityEngine.Events.UnityAction),
            typeof(System.Collections.IEnumerator)
        };

//黑名单
[BlackList]
public static List<List<string>> BlackList = new List<List<string>>()  {
            new List<string>(){"System.Xml.XmlNodeList", "ItemOf"},
            new List<string>(){"UnityEngine.WWW", "movie"},
#if UNITY_WEBGL
            new List<string>(){"UnityEngine.WWW", "threadPriority"},
#endif
            new List<string>(){"UnityEngine.Texture2D", "alphaIsTransparency"},
            new List<string>(){"UnityEngine.Security", "GetChainOfTrustValue"},
            new List<string>(){"UnityEngine.CanvasRenderer", "onRequestRebuild"},
            new List<string>(){"UnityEngine.Light", "areaSize"},
            new List<string>(){"UnityEngine.Light", "lightmapBakeType"},
            new List<string>(){"UnityEngine.WWW", "MovieTexture"},
            new List<string>(){"UnityEngine.WWW", "GetMovieTexture"},
            new List<string>(){"UnityEngine.AnimatorOverrideController", "PerformOverrideClipListCleanup"},
#if !UNITY_WEBPLAYER
            new List<string>(){"UnityEngine.Application", "ExternalEval"},
#endif
            new List<string>(){"UnityEngine.GameObject", "networkView"}, //4.6.2 not support
            new List<string>(){"UnityEngine.Component", "networkView"},  //4.6.2 not support
            new List<string>(){"System.IO.FileInfo", "GetAccessControl", "System.Security.AccessControl.AccessControlSections"},
            new List<string>(){"System.IO.FileInfo", "SetAccessControl", "System.Security.AccessControl.FileSecurity"},
            new List<string>(){"System.IO.DirectoryInfo", "GetAccessControl", "System.Security.AccessControl.AccessControlSections"},
            new List<string>(){"System.IO.DirectoryInfo", "SetAccessControl", "System.Security.AccessControl.DirectorySecurity"},
            new List<string>(){"System.IO.DirectoryInfo", "CreateSubdirectory", "System.String", "System.Security.AccessControl.DirectorySecurity"},
            new List<string>(){"System.IO.DirectoryInfo", "Create", "System.Security.AccessControl.DirectorySecurity"},
            new List<string>(){"UnityEngine.MonoBehaviour", "runInEditMode"},
        };

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值