iiiCircle
软件改变世界!
展开
-
LuaFramework-打包AssetBundle工具
新建AddBuildMapUtility.csusing UnityEngine;using System.Collections.Generic;using UnityEditor;using System.IO;using System.Text;public enum SuffixEnum{ Prefab, Png, Csv, Txt,}public原创 2016-11-03 16:21:34 · 1968 阅读 · 0 评论 -
9. Unity3d Lua框架 - xLua - SceneManager 场景管理系统:调度和控制场景异步加载以及进度管理,展示loading界面和更新进度条数据,GC、卸载未使用资源等
--[[-- 场景管理系统:调度和控制场景异步加载以及进度管理,展示loading界面和更新进度条数据,GC、卸载未使用资源等-- 注意:-- 1、资源预加载放各个场景类中自行控制-- 2、场景loading的UI窗口这里统一管理,由于这个窗口很简单,更新进度数据时直接写Model层--]]--[[-- 场景基类,各场景类从这里继承:提供统一的场景加载和初始化步骤,负责资源预加载...原创 2019-04-02 15:48:07 · 28592 阅读 · 0 评论 -
8. Unity3d Lua框架 - xLua - Resource 资源管理系统:提供资源加载管理
--[[-- 资源管理系统:提供资源加载管理-- 注意:-- 1、只提供异步接口,即使内部使用的是同步操作,对外来说只有异步-- 2、两套API:使用回调(任何不带"Co"的接口)、使用协程(任何带"Co"的接口)-- 3、对于串行执行一连串的异步操作,建议使用协程(用同步形式的代码写异步逻辑),回调方式会使代码难读-- 4、所有lua层脚本别直接使用cs侧的AssetBundleMa...原创 2019-04-02 15:44:43 · 28278 阅读 · 0 评论 -
7. Unity3d Lua框架 - xLua - Global 加载全局模块,所有全局性的东西都在这里加载,好集中管理
--[[-- 1、加载全局模块,所有全局性的东西都在这里加载,好集中管理-- 2、模块定义时一律用local再return,模块是否是全局模块由本脚本决定,在本脚本加载的一律为全局模块-- 3、对必要模块执行初始化-- 注意:-- 1、全局的模块和被全局模块持有的引用无法GC,除非显式设置为nil-- 2、除了单例类、通用的工具类、逻辑上的静态类以外,所有逻辑模块不要暴露到全局命名空间...原创 2019-04-02 15:38:37 · 27897 阅读 · 0 评论 -
6. Unity3d Lua框架 - xLua - UIManager UI管理系统:提供UI操作、UI层级、UI消息、UI资源加载、UI调度、UI缓存等管理
UIManager.lua– UI管理系统:提供UI操作、UI层级、UI消息、UI资源加载、UI调度、UI缓存等管理– 注意:– 1、Window包括:Model、Ctrl、View、和Active状态等构成的一个整体概念– 2、所有带Window接口的都是操作整个窗口,如CloseWindow以后:整个窗口将不再活动– 3、所有带View接口的都是操作视图层展示,如CloseVie...原创 2019-04-02 15:35:31 · 31801 阅读 · 0 评论 -
5. Unity3d Lua框架 - xLua - 所有UI组件基类
UI组件基类:所有UI组件从这里继承UI容器基类:当一个UI组件持有其它UI组件时,它就是一个容器类,它要负责调度其它UI组件的相关函数UI控制层基类:发送网络请求(网络数据)、操作游戏逻辑、修改模型数据(本地数据)UI模型层基类:该界面相关数据,同时负责消息定制UI带有子窗口记忆功能的模型层基类:窗口被重新打开时会自动打开之前没有关闭的子级窗口UI视图层基类:该界面所有UI刷新操作,...原创 2019-04-02 15:24:33 · 31220 阅读 · 1 评论 -
4. Unity3d Lua框架 - xLua - LogicUpdater
LogicUpdater.lua--[[-- 游戏逻辑Updater,游戏逻辑模块可能需要严格的驱动顺序--]]local LogicUpdater = BaseClass("LogicUpdater", UpdatableSingleton)local traceback = debug.tracebacklocal function Update(self) local ...原创 2019-04-02 15:09:47 · 27156 阅读 · 0 评论 -
3. Unity3d Lua框架 - xLua - TimerManager
TimerManager.lua--[[-- 定时器管理:负责定时器获取、回收、缓存、调度等管理-- 注意:-- 1、任何需要定时更新的函数从这里注册,游戏逻辑层最好使用不带"Co"的接口-- 2、带有"Co"的接口都是用于协程,它的调度会比普通更新后一步---次序依从Unity函数调用次序:https://docs.unity3d.com/Manual/ExecutionOrder...原创 2019-04-02 14:52:20 · 28590 阅读 · 0 评论 -
2. Unity3d Lua框架 - xLua - Lua面向对象设计 静态类 数据结构类 消息系统 单例类 可更新脚本 可更新单例脚本
BaseClass.lua--[[-- Lua面向对象设计--]]--保存类类型的虚表local _class = {} -- added by wsh @ 2017-12-09-- 自定义类型ClassType = { class = 1, instance = 2,} function BaseClass(classname, super) assert(t...原创 2019-04-02 14:45:47 · 28093 阅读 · 0 评论 -
2. Unity3d Lua框架 - xLua - UpdateManager
UpdateManager.lua--[[-- 更新管理,负责Unity侧Update、LateUpdate、FixedUpdate对Lua脚本的调用-- 注意:-- 1、别直接用tolua的UpdateBeat、LateUpdateBeat、FixedUpdateBeat,所有需要以上三个更新函数的脚本,都从这里注册。-- 2、tolua的event没有使用weak表,直接使用to...原创 2019-04-02 14:40:01 · 27855 阅读 · 0 评论 -
1. Unity3d Lua框架 - xLua - Hotfix
HotfixMain.lua--[[-- 游戏热修复入口--]]HotfixMain = {}-- 需要被加载的热修复模块local modules = { "XLua.Hotfix.HotfixTest",}local function Start() print("HotfixMain start...") for _,v in ipairs(modules) ...原创 2019-04-02 14:33:11 · 27734 阅读 · 0 评论 -
6.Unity3D热更新-LuaFramework-声音管理器
1、使用方法SoundManager估计是从其他地方拷过来的,并不能很好的与框架结合,这里我们先看看原来的SoundManager的使用方法,再介绍它的不足之处及改进方法。虽然SoundManager定义了好几个方法,但能直接在lua中使用的只有用于播放背景音乐的PlayBacksound。把声音文件放到Resource目录下,由于SoundManager使用Resources.Load加载声音文件原创 2016-12-30 17:26:16 · 1152 阅读 · 0 评论 -
5.Unity3D热更新-LuaFramework-UI
1、显示UI界面 创建Panel 的 prefab 里面添加一个按钮。放到:Assets/MyTestPrefab/PrefabTest/PanelTest 下面/// <summary> /// 处理框架实例包 /// </summary> static void HandleExampleBundle() { string resPath = AppDa原创 2016-12-29 14:55:07 · 1438 阅读 · 0 评论 -
4.Unity3D热更新-LuaFramework-Lua组件
1、LuaComponent组件 LuaComponent主要有Get和Add两个静态方法,其中Get相当于UnityEngine中的GetComponent方法,Add相当于AddComponent方法,只不过这里添加的是lua组件不是c#组件。每个LuaComponent拥有一个LuaTable(lua表)类型的变量table,它既引用上述的Component表。Add方法使用AddCompo原创 2016-12-29 14:06:39 · 1715 阅读 · 1 评论 -
2.Unity3D热更新-LuaFramework-使用lua创建物体
1、创建物体 为了调试的方便,笔者先将框架配置为本地模式,待测试热更新时再改成更新模式。/// <summary> /// 如果开启更新模式,前提必须启动框架自带服务器端。 /// 否则就需要自己将StreamingAssets里面的所有内容 /// 复制到自己的Webserver上面,并修改下面的WebUrl。 /// </summ原创 2016-12-29 10:41:29 · 4683 阅读 · 0 评论 -
3.Unity3D热更新-LuaFramework-编写Lua逻辑
1、Lua的Update方法 出于效率的考虑,tolua提供了名为UpdateBeat的对象,在LuaFramework中,只需给UpdateBeat添加回调函数,该函数便会每帧执行,相当于Monobehaviour的Update方法。Lua代码如下所示:UpdateEvent = GetEvent(“UpdateBeat”); LateUpdateEvent = GetEvent(“LateU原创 2016-12-29 11:13:50 · 1507 阅读 · 1 评论 -
1.Unity3D热更新-LuaFramework
1.运行框架1.只要在https://github.com/jarjin (这个网址国内可能无法访问)下载LuaFramework,然后用Unity3D打开,打开之后需要点击lua菜单里面的Generate All和LuaFramework菜单里Build XXX Resources,以生成一些必要的文件 2.然后就可以运行起来了。2.配置框架1.找到LuaFramework\ConstDefin原创 2016-12-29 10:12:15 · 4505 阅读 · 0 评论 -
Lua 入门
LuaInterface包括两个核心库一个是LuaInterface.dll,一个是Luanet.dll,我们可以通过LuaInterface完成Lua和C#(CLR)之间的互相调用在C#中执行访问Lua代码Lua lua = new Lua(); //创建Lua解析器 lua["num"]=2; //定义一个num lua["str"]="a string"; //定义原创 2016-10-14 10:55:02 · 2607 阅读 · 0 评论 -
10. Unity3d Lua框架 - xLua - GameMain 定义为全局模块,整个lua程序的入口类 在Unity中启动
-- 全局模块require "Global.Global" -- 定义为全局模块,整个lua程序的入口类GameMain = {};-- 全局初始化local function Initilize() local loadingAssetbundlePath = "UI/Prefabs/View/UILoading.prefab" ResourcesManager:GetIns...原创 2019-04-03 09:29:57 · 18452 阅读 · 0 评论