public static void Bind(IntPtr L) { objectWrap.Register(L); ObjectWrap.Register(L); ApplicationWrap.Register(L); BaseLuaWrap.Register(L); BehaviourWrap.Register(L); ByteBufferWrap.Register(L); ComponentWrap.Register(L); ConstWrap.Register(L); GameObjectWrap.Register(L); GlobalWrap.Register(L); HashtableWrap.Register(L); iooWrap.Register(L); LuaHelperWrap.Register(L); MonoBehaviourWrap.Register(L); NetworkManagerWrap.Register(L); PanelManagerWrap.Register(L); ResourceManagerWrap.Register(L); TimerManagerWrap.Register(L); TimeWrap.Register(L); TransformWrap.Register(L); TypeWrap.Register(L); UIEventListenerWrap.Register(L); UtilWrap.Register(L); Vector2Wrap.Register(L); Vector3Wrap.Register(L); }
public static void Bind(IntPtr L) { AnimationBlendModeWrap.Register(L); AnimationClipWrap.Register(L); AnimationStateWrap.Register(L); AnimationWrap.Register(L); ApplicationWrap.Register(L); AssetBundleWrap.Register(L); AsyncOperationWrap.Register(L); AudioClipWrap.Register(L); AudioSourceWrap.Register(L); BaseLuaWrap.Register(L); BehaviourWrap.Register(L); BlendWeightsWrap.Register(L); BoxColliderWrap.Register(L); ByteBufferWrap.Register(L); CameraClearFlagsWrap.Register(L); CameraWrap.Register(L); CharacterControllerWrap.Register(L); ColliderWrap.Register(L); ComponentWrap.Register(L); ConstWrap.Register(L); DebuggerWrap.Register(L); DelegateWrap.Register(L); EnumWrap.Register(L); GameObjectWrap.Register(L); IEnumeratorWrap.Register(L); InputWrap.Register(L); iooWrap.Register(L); KeyCodeWrap.Register(L); LightTypeWrap.Register(L); LightWrap.Register(L); LuaHelperWrap.Register(L); MaterialWrap.Register(L); MeshColliderWrap.Register(L); MeshRendererWrap.Register(L); MonoBehaviourWrap.Register(L); NetworkManagerWrap.Register(L); ObjectWrap.Register(L); PanelManagerWrap.Register(L); ParticleAnimatorWrap.Register(L); ParticleEmitterWrap.Register(L); ParticleRendererWrap.Register(L); ParticleSystemWrap.Register(L); PhysicsWrap.Register(L); PlayModeWrap.Register(L); QualitySettingsWrap.Register(L); QueueModeWrap.Register(L); RectTransformWrap.Register(L); RendererWrap.Register(L); RenderSettingsWrap.Register(L); RenderTextureWrap.Register(L); ResourceManagerWrap.Register(L); ScreenWrap.Register(L); SkinnedMeshRendererWrap.Register(L); SleepTimeoutWrap.Register(L); SpaceWrap.Register(L); SphereColliderWrap.Register(L); stringWrap.Register(L); System_ObjectWrap.Register(L); TextureWrap.Register(L); TimerManagerWrap.Register(L); TimeWrap.Register(L); TouchPhaseWrap.Register(L); TrackedReferenceWrap.Register(L); TransformWrap.Register(L); TypeWrap.Register(L); UnityEngine_UI_TextWrap.Register(L); UtilWrap.Register(L); }
/// <summary> /// 数据结构定义 /// </summary> private static void GenDataStruct() { StringBuilder builder = new StringBuilder(); builder.AppendLine("local Stream = require(\"Common.DataStream\")"); builder.AppendLine("local GetOrCreate = Util.GetOrCreate"); builder.AppendLine(); builder.AppendLine("local meta"); var cit = ClassWrap.Classes.GetEnumerator(); while (cit.MoveNext()) { var cls = cit.Current.Value; var fullType = Util.CorrectFullType(cls.FullName); builder.AppendLine("meta= {}"); builder.AppendLine("meta.__index = meta"); builder.AppendFormat("meta.__cname = '{0}'\n", fullType); //--常量字段 for (int j = 0; j < cls.Consts.Count; j++) { ConstWrap constant = cls.Consts[j]; if (!Util.MatchGroups(constant.Group)) { continue; } string value = constant.Value; switch (constant.FullName) { case Setting.BOOL: value = value.ToLower(); break; case Setting.STRING: value = string.Format("'{0}'", value); break; default: if (EnumWrap.IsEnum(constant.FullName)) { value = EnumWrap.Enums[constant.FullName].GetValue(constant.Value); } break; } builder.AppendFormat("meta.{0} = {1}\n", constant.Name, value); } builder.AppendFormat("GetOrCreate('{0}.{1}')['{2}'] = meta\n", Setting.ModuleName, cls.Namespace, cls.Name); string funcName = fullType.Replace(".", ""); if (cls.IsDynamic()) { builder.AppendFormat("function Stream:Get{0}Maker()\n", funcName); builder.Space().AppendFormat("return self['Get' .. self:GetString():gsub('%.', '')](self)\n"); builder.AppendFormat("end\n"); } builder.AppendFormat("function Stream:Get{0}()\n", funcName); if (!cls.Inherit.IsEmpty()) { builder.Space().AppendFormat("local o = self:Get{0}()\n", Util.CorrectFullType(cls.Inherit).Replace(".", "")); } else { builder.Space().AppendFormat("local o = {{}}\n"); } builder.Space().AppendFormat("setmetatable(o, {0})\n", fullType); //--普通字段 for (int j = 0; j < cls.Fields.Count; j++) { FieldWrap field = cls.Fields[j]; if (!Util.MatchGroups(field.Group)) { continue; } if (field.IsRaw) { builder.Space().AppendFormat("o.{0} = self:Get{1}()\n", field.Name, field.OriginalType.FirstCharUpper()); } else if (field.IsEnum) { builder.Space().AppendFormat("o.{0} = self:GetInt()\n", field.Name); } else if (field.IsClass) { if (field.IsDynamic) { builder.Space().AppendFormat("o.{0} = self:Get{1}Maker()\n", field.Name, Util.CorrectFullType(field.OriginalType).Replace(".", "")); } else { builder.Space().AppendFormat("o.{0} = self:Get{1}()\n", field.Name, Util.CorrectFullType(field.OriginalType).Replace(".", "")); } } else if (field.IsContainer) { if (field.OriginalType == Setting.LIST) { var item = field.GetItemDefine(); string index = Util.CorrectFullType(item.OriginalType).Replace(".", "").FirstCharUpper(); if (item.IsClass && item.IsDynamic) { index += "Maker"; } builder.Space().AppendFormat("o.{0} = self:GetList('{1}')\n", field.Name, index); } else if (field.OriginalType == Setting.DICT) { var k = field.GetKeyDefine(); string key = k.OriginalType.FirstCharUpper(); if (k.IsEnum) { key = "Int"; } var v = field.GetValueDefine(); string value = Util.CorrectFullType(v.OriginalType).Replace(".", "").FirstCharUpper(); if (v.IsClass && v.IsDynamic) { value += "Maker"; } else if (v.IsEnum) { value = "Int"; } builder.Space().AppendFormat("o.{0} = self:GetDict('{1}', '{2}')\n", field.Name, key, value); } } } builder.Space().AppendFormat("return o\n"); builder.AppendFormat("end\n"); } var eit = EnumWrap.Enums.GetEnumerator(); while (eit.MoveNext()) { EnumWrap en = eit.Current.Value; builder.AppendFormat("GetOrCreate('{0}.{1}')['{2}'] = {{\n", Setting.ModuleName, en.Namespace, en.Name); foreach (var item in en.Values) { builder.Space().AppendFormat("{0} = {1},\n", item.Key, item.Value); } builder.AppendLine("}"); } builder.AppendLine("return Stream"); string path = Path.Combine(Setting.LuaDir, DATA_STRUCT + ".lua"); Util.SaveFile(path, builder.ToString()); }
/// <summary> /// 数据结构 /// </summary> static void GenDataStruct(StringBuilder builder, ClassWrap cls) { string extends = cls.Inherit.IsEmpty() ? " " : $" extends {CorrectNamespace(cls.Inherit)} "; builder.AppendLine($"/** {cls.Desc} */") .AppendLine($"export class {cls.Name}{extends}{{"); for (int j = 0; j < cls.Consts.Count; j++) { ConstWrap cst = cls.Consts[j]; if (!Util.MatchGroups(cst.Group)) { continue; } string value = cst.Value; switch (cst.FullName) { case Setting.BOOL: value = value.ToLower(); break; case Setting.STRING: value = string.Format("'{0}'", value); break; default: if (EnumWrap.IsEnum(cst.FullName)) { string enumName = EnumWrap.Enums[cst.FullName].GetEnumName(value); enumName = enumName.IsEmpty() ? value : enumName; value = string.Format("{0}.{1}", CorrectNamespace(cst.FullName), enumName); } break; } builder.Space().AppendLine($"/** {cst.Desc} */") .Space().AppendLine($"static readonly {cst.Name} = {value};"); } foreach (var item in cls.Fields) { builder.Space().AppendLine($"/** {item.Desc} */") .Space().AppendLine($"readonly {item.Name}: {GetType(item)};"); } builder.Space().AppendLine("constructor(o: any) {"); if (!cls.Inherit.IsEmpty()) { builder.Space(2).AppendLine("super(o);"); } foreach (var item in cls.Fields) { builder.Space(2).AppendLine($"this.{item.Name} = {GetDefineName(item)};"); } builder.Space().AppendLine("}") .AppendLine("}"); if (cls.IsDynamic()) { builder.AppendLine($"Object.defineProperty(Stream.prototype, 'Get{GetDefineName(cls.FullName)}', {{") .Space().AppendLine("value: function (this: any) { return this[`Get${this.GetString().replace(/[\\.]+/g, '')}`](); },") .Space().AppendLine("writable: false,") .AppendLine("});"); } builder.AppendLine($"Object.defineProperty(Stream.prototype, 'Get{GetDefineName(cls.FullName, false)}', {{") .Space().AppendLine($"value: function(this: any) {{ return new {cls.Name}(this); }},") .Space().AppendLine("writable: false,") .AppendLine("});"); }
public static void Bind(LuaState L) { float t = Time.realtimeSinceStartup; L.BeginModule(null); LuaInterface_DebuggerWrap.Register(L); eyeWrap.Register(L); UtilsWrap.Register(L); ConstWrap.Register(L); GlobalWrap.Register(L); ShareDataWrap.Register(L); ByteBufferWrap.Register(L); FileUtilWrap.Register(L); StringUtilWrap.Register(L); TableUtilWrap.Register(L); LogUtilWrap.Register(L); IniUtilWrap.Register(L); PathUtilWrap.Register(L); GameManagerWrap.Register(L); ResourceManagerWrap.Register(L); ObjectPoolManagerWrap.Register(L); NetworkManagerWrap.Register(L); AudioManagerWrap.Register(L); NotificationManagerWrap.Register(L); LocalizationWrap.Register(L); DeviceHelperWrap.Register(L); ArmyMoveWrap.Register(L); ProgressSpriteWrap.Register(L); UIModWrap.Register(L); UISystemWrap.Register(L); UIManagerWrap.Register(L); UIButtonWrap.Register(L); UIButtonAgentWrap.Register(L); UIInputFieldWrap.Register(L); UIInputFieldSubmitWrap.Register(L); UISliderWrap.Register(L); UIScrollRectWrap.Register(L); UIScrollPageWrap.Register(L); UIScrollBaseWrap.Register(L); UIScrollRingWrap.Register(L); UIScrollViewWrap.Register(L); UIClippingLoopWrap.Register(L); UIDragSensorWrap.Register(L); UITextWrap.Register(L); UIToggleWrap.Register(L); UITweenWrap.Register(L); UITweenRectPositionWrap.Register(L); UITweenRectPositionBetweenWrap.Register(L); UITweenFadeWrap.Register(L); UITweenColorWrap.Register(L); UITweenLocalPositionWrap.Register(L); UITweenLocalPositionBetweenWrap.Register(L); UITweenScaleWrap.Register(L); UITweenScale1Wrap.Register(L); UITweenPositionWrap.Register(L); UITweenSizeDeltaWrap.Register(L); UITweenCityBuildingWrap.Register(L); UITweenMoveWrap.Register(L); UITweenJumpWrap.Register(L); UITweenPathWrap.Register(L); UITextTimeCountdownWrap.Register(L); UITextNumCountdownWrap.Register(L); UITextUnderlineWrap.Register(L); UIProgressWrap.Register(L); FXTypeWriterWrap.Register(L); TypeWriterWrap.Register(L); UITextAutoOmitWrap.Register(L); UIPopWindowWrap.Register(L); UIGradientWrap.Register(L); ShakeWrap.Register(L); UIHighLightMaskWrap.Register(L); ReferenceWrap.Register(L); UIPolygonChartWrap.Register(L); UIAutoSizeWrap.Register(L); UITextAgentWrap.Register(L); SpriteAnimationWrap.Register(L); YlyAssetIdentifyWrap.Register(L); YlyRichTextWrap.Register(L); YlyDelegateUtilWrap.Register(L); GizmoPlaneWrap.Register(L); GizmoBezierLineWrap.Register(L); BezierWrap.Register(L); BezierMoveWrap.Register(L); CityWrap.Register(L); CityCameraWrap.Register(L); CityBuildingWrap.Register(L); CityLandWrap.Register(L); CharacterWrap.Register(L); MapBorderWrap.Register(L); MapUnitMoveWrap.Register(L); WorldMapCameraWrap.Register(L); WorldMapThumbCameraWrap.Register(L); ScreenBlurWrap.Register(L); ChannelSDKWrap.Register(L); UIPrimitiveBaseWrap.Register(L); L.BeginModule("UnityEngine"); UnityEngine_ComponentWrap.Register(L); UnityEngine_TransformWrap.Register(L); UnityEngine_MaterialWrap.Register(L); UnityEngine_CameraWrap.Register(L); UnityEngine_AudioSourceWrap.Register(L); UnityEngine_BehaviourWrap.Register(L); UnityEngine_MonoBehaviourWrap.Register(L); UnityEngine_GameObjectWrap.Register(L); UnityEngine_TrackedReferenceWrap.Register(L); UnityEngine_ApplicationWrap.Register(L); UnityEngine_PhysicsWrap.Register(L); UnityEngine_ColliderWrap.Register(L); UnityEngine_TimeWrap.Register(L); UnityEngine_TextureWrap.Register(L); UnityEngine_Texture2DWrap.Register(L); UnityEngine_ShaderWrap.Register(L); UnityEngine_RendererWrap.Register(L); UnityEngine_WWWWrap.Register(L); UnityEngine_ScreenWrap.Register(L); UnityEngine_CameraClearFlagsWrap.Register(L); UnityEngine_AudioClipWrap.Register(L); UnityEngine_AssetBundleWrap.Register(L); UnityEngine_ParticleSystemWrap.Register(L); UnityEngine_AsyncOperationWrap.Register(L); UnityEngine_LightTypeWrap.Register(L); UnityEngine_SleepTimeoutWrap.Register(L); UnityEngine_AnimatorWrap.Register(L); UnityEngine_InputWrap.Register(L); UnityEngine_KeyCodeWrap.Register(L); UnityEngine_SkinnedMeshRendererWrap.Register(L); UnityEngine_SpaceWrap.Register(L); UnityEngine_AnimationBlendModeWrap.Register(L); UnityEngine_QueueModeWrap.Register(L); UnityEngine_PlayModeWrap.Register(L); UnityEngine_WrapModeWrap.Register(L); UnityEngine_QualitySettingsWrap.Register(L); UnityEngine_RenderSettingsWrap.Register(L); UnityEngine_ResourcesWrap.Register(L); UnityEngine_SpriteRendererWrap.Register(L); UnityEngine_MotionWrap.Register(L); UnityEngine_SpriteWrap.Register(L); UnityEngine_CanvasWrap.Register(L); UnityEngine_RectTransformWrap.Register(L); UnityEngine_RectWrap.Register(L); UnityEngine_TextGeneratorWrap.Register(L); UnityEngine_UICharInfoWrap.Register(L); UnityEngine_TextGenerationSettingsWrap.Register(L); UnityEngine_GUIUtilityWrap.Register(L); UnityEngine_Color32Wrap.Register(L); L.BeginModule("Experimental"); L.BeginModule("Director"); UnityEngine_Experimental_Director_PlayableWrap.Register(L); L.EndModule(); L.EndModule(); L.BeginModule("SceneManagement"); UnityEngine_SceneManagement_SceneManagerWrap.Register(L); L.EndModule(); L.BeginModule("UI"); UnityEngine_UI_LayoutGroupWrap.Register(L); UnityEngine_UI_ImageWrap.Register(L); UnityEngine_UI_SelectableWrap.Register(L); UnityEngine_UI_ButtonWrap.Register(L); UnityEngine_UI_InputFieldWrap.Register(L); UnityEngine_UI_SliderWrap.Register(L); UnityEngine_UI_ScrollRectWrap.Register(L); UnityEngine_UI_TextWrap.Register(L); UnityEngine_UI_ToggleWrap.Register(L); UnityEngine_UI_GridLayoutGroupWrap.Register(L); UnityEngine_UI_LayoutElementWrap.Register(L); UnityEngine_UI_MaskableGraphicWrap.Register(L); UnityEngine_UI_GraphicWrap.Register(L); UnityEngine_UI_BaseMeshEffectWrap.Register(L); L.BeginModule("InputField"); L.RegFunction("OnValidateInput", UnityEngine_UI_InputField_OnValidateInput); L.EndModule(); L.EndModule(); L.BeginModule("EventSystems"); UnityEngine_EventSystems_UIBehaviourWrap.Register(L); L.EndModule(); L.BeginModule("Events"); L.RegFunction("UnityAction", UnityEngine_Events_UnityAction); L.RegFunction("UnityAction_UnityEngine_SceneManagement_Scene_UnityEngine_SceneManagement_LoadSceneMode", UnityEngine_Events_UnityAction_UnityEngine_SceneManagement_Scene_UnityEngine_SceneManagement_LoadSceneMode); L.RegFunction("UnityAction_UnityEngine_SceneManagement_Scene", UnityEngine_Events_UnityAction_UnityEngine_SceneManagement_Scene); L.RegFunction("UnityAction_UnityEngine_SceneManagement_Scene_UnityEngine_SceneManagement_Scene", UnityEngine_Events_UnityAction_UnityEngine_SceneManagement_Scene_UnityEngine_SceneManagement_Scene); L.EndModule(); L.BeginModule("Camera"); L.RegFunction("CameraCallback", UnityEngine_Camera_CameraCallback); L.EndModule(); L.BeginModule("Application"); L.RegFunction("LowMemoryCallback", UnityEngine_Application_LowMemoryCallback); L.RegFunction("AdvertisingIdentifierCallback", UnityEngine_Application_AdvertisingIdentifierCallback); L.RegFunction("LogCallback", UnityEngine_Application_LogCallback); L.EndModule(); L.BeginModule("AudioClip"); L.RegFunction("PCMReaderCallback", UnityEngine_AudioClip_PCMReaderCallback); L.RegFunction("PCMSetPositionCallback", UnityEngine_AudioClip_PCMSetPositionCallback); L.EndModule(); L.BeginModule("Canvas"); L.RegFunction("WillRenderCanvases", UnityEngine_Canvas_WillRenderCanvases); L.EndModule(); L.BeginModule("RectTransform"); L.RegFunction("ReapplyDrivenProperties", UnityEngine_RectTransform_ReapplyDrivenProperties); L.EndModule(); L.EndModule(); L.BeginModule("OpenUDIDPhone"); OpenUDIDPhone_OpenUDIDWrap.Register(L); L.EndModule(); L.BeginModule("UITextTimeCountdown"); UITextTimeCountdown_DirectTypeWrap.Register(L); L.EndModule(); L.BeginModule("DragonBones"); DragonBones_UnityFactoryWrap.Register(L); DragonBones_AnimationTimelineStateWrap.Register(L); DragonBones_AnimationFrameDataWrap.Register(L); DragonBones_AnimationStateWrap.Register(L); DragonBones_AnimationFadeOutModeWrap.Register(L); DragonBones_AnimationWrap.Register(L); DragonBones_AnimationDataWrap.Register(L); DragonBones_AnimationConfigWrap.Register(L); DragonBones_ActionDataWrap.Register(L); DragonBones_ActionTypeWrap.Register(L); DragonBones_ArmatureWrap.Register(L); DragonBones_ArmatureDataWrap.Register(L); DragonBones_ArmatureTypeWrap.Register(L); DragonBones_BoneWrap.Register(L); DragonBones_BoneDataWrap.Register(L); DragonBones_BoneFrameDataWrap.Register(L); DragonBones_BoneTimelineDataWrap.Register(L); DragonBones_BoneTimelineStateWrap.Register(L); DragonBones_DragonBonesWrap.Register(L); DragonBones_DragonBonesDataWrap.Register(L); DragonBones_TransformWrap.Register(L); DragonBones_TransformObjectWrap.Register(L); DragonBones_BaseObjectWrap.Register(L); DragonBones_EventObjectWrap.Register(L); DragonBones_UnityArmatureComponentWrap.Register(L); DragonBones_BaseFactoryWrap.Register(L); DragonBones_TimelineState_DragonBones_AnimationFrameData_DragonBones_AnimationDataWrap.Register(L); DragonBones_FrameData_DragonBones_AnimationFrameDataWrap.Register(L); DragonBones_TimelineData_DragonBones_AnimationFrameDataWrap.Register(L); DragonBones_TweenFrameData_DragonBones_BoneFrameDataWrap.Register(L); DragonBones_FrameData_DragonBones_BoneFrameDataWrap.Register(L); DragonBones_TimelineData_DragonBones_BoneFrameDataWrap.Register(L); DragonBones_TweenTimelineState_DragonBones_BoneFrameData_DragonBones_BoneTimelineDataWrap.Register(L); DragonBones_TimelineState_DragonBones_BoneFrameData_DragonBones_BoneTimelineDataWrap.Register(L); DragonBones_UnityEventDispatcher_DragonBones_EventObjectWrap.Register(L); L.RegFunction("ListenerDelegate_DragonBones_EventObject", DragonBones_ListenerDelegate_DragonBones_EventObject); L.EndModule(); L.BeginModule("LKCamera"); LKCamera_Camera2DWrap.Register(L); L.EndModule(); L.BeginModule("System"); L.RegFunction("Action", System_Action); L.RegFunction("Predicate_int", System_Predicate_int); L.RegFunction("Action_int", System_Action_int); L.RegFunction("Comparison_int", System_Comparison_int); L.RegFunction("Action_UnityEngine_Object", System_Action_UnityEngine_Object); L.EndModule(); L.BeginModule("GameManager"); L.RegFunction("LuaExecute", GameManager_LuaExecute); L.EndModule(); L.BeginModule("AudioManager"); L.RegFunction("SwitchChanged", AudioManager_SwitchChanged); L.EndModule(); L.BeginModule("UIInputFieldSubmit"); L.RegFunction("OnValidateInput", UIInputFieldSubmit_OnValidateInput); L.EndModule(); L.BeginModule("UITween"); L.RegFunction("OnFinish", UITween_OnFinish); L.EndModule(); L.BeginModule("UIProgress"); L.RegFunction("LuaCallback", UIProgress_LuaCallback); L.EndModule(); L.BeginModule("YlyDelegateUtil"); L.RegFunction("StringDelegate", YlyDelegateUtil_StringDelegate); L.EndModule(); L.BeginModule("Character"); L.RegFunction("OnEvent", Character_OnEvent); L.EndModule(); L.EndModule(); L.BeginPreLoad(); L.AddPreLoad("UnityEngine.MeshRenderer", LuaOpen_UnityEngine_MeshRenderer, typeof(UnityEngine.MeshRenderer)); L.AddPreLoad("UnityEngine.BoxCollider", LuaOpen_UnityEngine_BoxCollider, typeof(UnityEngine.BoxCollider)); L.AddPreLoad("UnityEngine.MeshCollider", LuaOpen_UnityEngine_MeshCollider, typeof(UnityEngine.MeshCollider)); L.AddPreLoad("UnityEngine.SphereCollider", LuaOpen_UnityEngine_SphereCollider, typeof(UnityEngine.SphereCollider)); L.AddPreLoad("UnityEngine.CharacterController", LuaOpen_UnityEngine_CharacterController, typeof(UnityEngine.CharacterController)); L.AddPreLoad("UnityEngine.CapsuleCollider", LuaOpen_UnityEngine_CapsuleCollider, typeof(UnityEngine.CapsuleCollider)); L.AddPreLoad("UnityEngine.Animation", LuaOpen_UnityEngine_Animation, typeof(UnityEngine.Animation)); L.AddPreLoad("UnityEngine.AnimationClip", LuaOpen_UnityEngine_AnimationClip, typeof(UnityEngine.AnimationClip)); L.AddPreLoad("UnityEngine.AnimationState", LuaOpen_UnityEngine_AnimationState, typeof(UnityEngine.AnimationState)); L.AddPreLoad("UnityEngine.BlendWeights", LuaOpen_UnityEngine_BlendWeights, typeof(UnityEngine.BlendWeights)); L.AddPreLoad("UnityEngine.RenderTexture", LuaOpen_UnityEngine_RenderTexture, typeof(UnityEngine.RenderTexture)); L.AddPreLoad("UnityEngine.Rigidbody", LuaOpen_UnityEngine_Rigidbody, typeof(UnityEngine.Rigidbody)); L.EndPreLoad(); Debugger.Log("Register lua type cost time: {0}", Time.realtimeSinceStartup - t); }
static void GenClass() { List <ClassWrap> classes = ClassWrap.GetExports(); for (int i = 0; i < classes.Count; i++) { ClassWrap cls = classes[i]; //命名空间 builder.AppendLine(string.Join("\r\n", namespaces)); builder.AppendLine($"namespace {Setting.ModuleName}.{cls.Namespace}"); Start(0); { //类 Comment(cls.Desc, TYPE_LEVEL); builder.Space(TYPE_LEVEL).AppendLine(cls.Attribute); if (cls.Inherit.IsEmpty()) { builder.Space(TYPE_LEVEL).AppendLine($"public partial class {cls.Name} : {CLASS_XML_OBJECT}"); } else { builder.Space(TYPE_LEVEL).AppendLine($"public partial class {cls.Name} : {Util.CorrectFullType(cls.Inherit)}"); } Start(TYPE_LEVEL); { StringBuilder writer = new StringBuilder(); StringBuilder reader = new StringBuilder(); for (int j = 0; j < cls.Consts.Count; j++) { ConstWrap constant = cls.Consts[j]; if (!Util.MatchGroups(constant.Group)) { continue; } Const(constant);//常量成员 } for (int j = 0; j < cls.Fields.Count; j++) { FieldWrap field = cls.Fields[j]; if (!Util.MatchGroups(field.Group)) { continue; } Field(field); //字段成员 WriteFunc(writer, field); //写xml数据 ReadFunc(reader, field); //读xml数据 } //写函数 builder.Space(MEM_LEVEL); builder.AppendLine($"public override void Write(TextWriter _1)"); Start(MEM_LEVEL); if (!cls.Inherit.IsEmpty()) { builder.Space(SEM_LEVEL).AppendLine("base.Write(_1);"); } builder.Append(writer.ToString()); End(MEM_LEVEL); //读函数 builder.Space(MEM_LEVEL); builder.AppendLine($"public override void Read(XmlNode _1)"); Start(MEM_LEVEL); { if (!cls.Inherit.IsEmpty()) { builder.Space(SEM_LEVEL).AppendLine("base.Read(_1);"); } builder.Space(SEM_LEVEL).AppendLine($"foreach (System.Xml.XmlNode _2 in GetChilds (_1))"); builder.Space(SEM_LEVEL).AppendLine($"switch (_2.Name)"); Start(SEM_LEVEL); builder.Append(reader.ToString()); End(SEM_LEVEL); } End(MEM_LEVEL); } End(TYPE_LEVEL); } End(0); string path = Path.Combine(Setting.XmlCodeDir, $"{Setting.ModuleName}.{cls.FullName}.cs"); Util.SaveFile(path, builder.ToString()); builder.Clear(); } }
static void Const(ConstWrap constant) { Comment(constant.Desc, MEM_LEVEL); builder.Space(MEM_LEVEL); builder.AppendLine($"{CONST_MODIFIERS} {Util.CorrectFullType(constant.FullName)} {constant.Name} = {Util.CorrectConst(constant.FullName, constant.Value)};"); }
static void GenClass() { List <ClassWrap> classes = ClassWrap.GetExports(); for (int i = 0; i < classes.Count; i++) { ClassWrap cls = classes[i]; //命名空间 builder.AppendLine(string.Join("\r\n", namespaces)); builder.AppendLine($"namespace {Setting.ModuleName}.{cls.Namespace}"); Start(0); { //类 Comment(cls.Desc, TYPE_LEVEL); if (cls.Inherit.IsEmpty()) { builder.Space(TYPE_LEVEL).AppendLine($"public class {cls.Name} : {CLASS_CFG_OBJECT}"); } else { builder.Space(TYPE_LEVEL).AppendLine($"public class {cls.Name} : {Util.CorrectFullType(cls.Inherit)}"); } Start(TYPE_LEVEL); { StringBuilder initer = new StringBuilder(); for (int j = 0; j < cls.Consts.Count; j++) { ConstWrap constant = cls.Consts[j]; if (!Util.MatchGroups(constant.Group)) { continue; } Const(constant);//常量成员 } for (int j = 0; j < cls.Fields.Count; j++) { FieldWrap field = cls.Fields[j]; if (!Util.MatchGroups(field.Group)) { continue; } Field(field); //字段成员 InitField(initer, field); //初始化字段语句 } //构造函数 builder.Space(MEM_LEVEL); if (cls.Inherit.IsEmpty()) { builder.AppendLine($"public {cls.Name}({CLASS_DATA_STREAM} {ARG_DATASTREAM})"); } else { builder.AppendLine($"public {cls.Name}({CLASS_DATA_STREAM} {ARG_DATASTREAM}) : base({ARG_DATASTREAM})"); } Start(MEM_LEVEL); builder.Append(initer.ToString()); End(MEM_LEVEL); //配置加载函数 if (cls.IsConfig()) { LoadFunc(ConfigWrap.Configs[cls.FullName]); } } End(TYPE_LEVEL); } End(0); string path = Path.Combine(Setting.CSDir, cls.Namespace.Replace(Setting.DotSplit[0], '/'), $"{cls.Name}.cs"); Util.SaveFile(path, builder.ToString()); builder.Clear(); } }