zoukankan      html  css  js  c++  java
  • Unity热更新相关概念

    热更新实现方式

    1. 使用Lua脚本编写游戏逻辑(Lua调用C#的方式),Lua解析器(也叫Lua虚拟机)在运行时解析Lua脚本,无须编译
    2. C#反射技术
    3. C#Light(什么鬼?) 

    如何学习热更新

    1. 学习Lua编程
     
       关于uLua的学习,我们可以参考官网,以及官方bbs来学习。上面有详细的视频文字教程
     官网:http://www.ulua.org/index.html
     官方bbs:http://bbs.ulua.org/
     
    2. 使用LuaInterface、Luanet进行Lua和C#交互
    3. 学习使用AssetBundle进行资源更新
    4. 学习Lua热更新框架(SimpleFramework等)

    热更新流程

    步骤1. 将StreamingAsset目录下的文件,全部复制到目标平台(ios/Android)的数据目录中(第一次运行游戏时)
    步骤2. 启动游戏前刷新所有文件夹,客户端文件(csv文件)与服务上的文件(file.txt)对比MD5,记录不同的文件,下载对应的文件替换,启动场景
    步骤3. 从数据目录加载AB(使用协程不使用线程)
    步骤5. 加载(和下载)AB的思路:
        (1)建立一个队列,队列中有加载AB的请求时,去加载,加载完成后移出队列,加载下一个直到完成
        (2)Unity5.0之后的AB资源是分开的,加载时难以判断依赖关系,而且AB资源在内存中只能有一个,所以使用单线程加载
    步骤6. 实例化后卸载内存中的AB

    uLuaFramework框架结构图

    注意的点

    (1)打包时根据每个文件起对应的AB名字,记录下MD5值和大小,保存为CSV文件(微软的东西确实好),好处是便于看也便于改
    (2)由于StreamingAsset目录是只读的,不能将服务端下载的文件放到里面,创建数据目录
    (3)开发用Resource加载,发布用LoadAB加载
    (4)不同平台下数据目录地址不同:
    Android、IOS:Application.persistentDataPath + "LuaFramework"
    Mac OS、Windows:c:/LuaFramework/
    Editor:Application.dataPath + "/StreamingAsset/"
  • 相关阅读:
    内存泄露检测工具之DMalloc
    五年后你在何方
    程序员技术练级攻略
    Windows编程革命简史
    su的时候密码认证失败的解决方法
    ruby 元编程 meta programming
    内存对齐分配策略(含位域模式)
    Ruby 之 Block, Proc, Lambda 联系区别,转载
    c++异常处理机制示例及讲解
    ruby 常见问题集 1 不断更新中
  • 原文地址:https://www.cnblogs.com/fuyunzzy/p/6527120.html
Copyright © 2011-2022 走看看