• assetBundle打包脚本与LUA


    AssetBundles与脚本

    所有Unity的AssetBundle,无论是从本地获取 还是www,或者打包整个场景。物体上的脚本都不会被编译。所以AssetBundle打包的时候即使物体上有脚本。导入后其他所有Unity的文件都不会有问题,唯独脚本是没作用的(错,只要主程序里含这个脚本就没有问题,也就是主程序和AB一起发布)。那能不能用脚本呢? 答案是,可以!

    核心是脚本可以打包进Dll,然后在客户端用System.Reflection下的Assembly来加载。

    步骤:

    开发

    (1)正常开发

    (2)写一个如txt的文本文档,说明物体上挂载的脚本

    (3)最后发布前,打包dll,标注dll版本号

    (4)打包AssetBundle,标注AssetBundle版本号

    客户端

    (1)先下载AssetBundle作为bytes,再保存到本地

    (2)使用AssetBundle.CreateFromMemory加载,再读取GameObject

    (3)下载dll,并根据文档将 脚本加载到对应的GameObject上

    核心代码:

    1.assembly=Assembly.Load (m_WWW.bytes);//从服务器上读取dll,作为assembly。中间可以加bytes的本地保存

    2.System.Type type = assembly.GetType ("ShowOnGUI"); //根据脚本类名称ShowOnGUI得到类

    3.gameObject.AddComponent(type);//将这个脚本挂在到物体上

    注意

    System.Reflection的这个做法对端游和安卓都没问题。但是违反苹果的相关规定,iOS可以用LUA。

    打包 code -> assembly -> .bytes -> ab

    使用 ab -> .bytes -> assembly

    源自:http://www.siluyouxi.com/game/code/u3d/1494.html

    博主说明:AB里包含的脚本,主程序里必须有一份,否则下载过来也会在挂脚本的地方出现叹号,而且通过测试,在AB里加了一个脚本,主程序不更新也没有用。可能打包时,AB里只包含了脚本的名字,一切以主程序里的

    脚本为准。AB打包脚本处理不完美,lua则是为解决这个问题出现的,极像WEB服务器端的脚本型解释执行语言,在服务端随时可以修改,立即生效,更新是相当方便。

  • 相关阅读:
    彻底理解cookie,session,token
    IP 别名和辅助 IP 地址
    1 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之DRBD的搭建
    centos配置DNS和ip
    centos的安装和下载
    activemq的学习
    mongodb的分片
    MongoDB的安装
    分布式事务中的三种解决方案详解(转载)
    redis中redis.conf配置文件解析
  • 原文地址:https://www.cnblogs.com/jiahuafu/p/6795924.html
Copyright © 2020-2023  润新知