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服务器端的脚本型解释执行语言,在服务端随时可以修改,立即生效,更新是相当方便。

assetBundle打包脚本与LUA的更多相关文章

  1. U3D assetbundle打包

    using UnityEngine; using System.Collections; using UnityEditor; //此脚本不一定要放于editor目录下,经测试,放于其它地方也可以 p ...

  2. Unity3d 5.x AssetBundle打包与加载

    1.AssetBundle打包 unity 5.x版本AssetBundle打包,只需要设置好AssetBundle的名称后,unity会自动将其打包,无需处理其他,唯独需要做的是设置好个AssetB ...

  3. Unity5 AssetBundle打包加载及服务器加载

    Assetbundle为资源包不是资源 打包1:通过脚本指定打包 AssetBundleBuild ab = new AssetBundleBuild                         ...

  4. Unity——AssetBundle打包工具

    Unity批量打AB包 为了资源热更新,Unity支持将所有资源打包成AssetBundle资源,存放在SteamingAssets文件夹中: 在项目发布之前,需要将所有资源打包成.ab文件,动态加载 ...

  5. Unity5.x版本AssetBundle打包研究

    Unity5的AssetBundle打包机制和以前版本不太一样.简单的说就是,只要给你要打包的资源设置一个AssetBundleName ,Unity自身会对这些设置了名字的资源进行打包,如果一个资源 ...

  6. Cocos2d-x 脚本语言Lua中的面向对象

    Cocos2d-x 脚本语言Lua中的面向对象 面向对象不是针对某一门语言,而是一种思想.在面向过程的语言也能够使用面向对象的思想来进行编程. 在Lua中,并没有面向对象的概念存在,没有类的定义和子类 ...

  7. Cocos2d-x 脚本语言Lua使用

    Cocos2d-x 脚本语言Lua使用 前面几篇博客已经把Lua的相关基础知识介绍了.本篇博客就来介绍一下,怎样在Cocos2d-x项目中使用Lua这门脚本语言进行开发.因为笔者使用的时Mac系统.所 ...

  8. xcode8.3 shell 自动打包脚本 记录

    题记 xcode升级8.3后发现之前所用的xcode自动打包基本无法使用,因此在网上零碎找到些资料,将之前的脚本简化.此次脚本是基于xcode证书配置进行打包(之前是指定描述文件.相对繁琐).因此代码 ...

  9. AssetBundle打包

    为热更新打基础(xlua\tolua) 素材.源码链接:http://www.sikiedu.com/course/74/task/1812/show 一.AssetBundle的定义和作用 1,As ...

随机推荐

  1. Beta阶段第2周/共2周 Scrum立会报告+燃尽图 09

    作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2389] 版本控制:https://git.coding.net/liuyy08 ...

  2. Linux C 数据结构 ->单向链表<-(~千金散尽还复来~)

    之前看到一篇单向链表的博文,代码也看着很舒服,于是乎记录下来,留给自己~,循序渐进,慢慢 延伸到真正的内核链表~(敢问路在何方?路在脚下~) 1. 简介 链表是Linux 内核中最简单,最普通的数据结 ...

  3. flv格式的播放代码

    <object classid="clsid:D27CDB6E-AE6D-444553540000" class="player2" codebase=& ...

  4. Codeforces 1009D:Relatively Prime Graph

    D. Relatively Prime Graph time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  5. rabbitmq学习(三):rabbitmq之扇形交换机、主题交换机

    前言 上篇我们学习了rabbitmq的作用以及直连交换机的代码实现,这篇我们继续看如何用代码实现扇形交换机和主题交换机 一.扇形交换机 1.生产者 /** * 生产者 */ public class ...

  6. 【spring源码学习】Spring @PostConstruct和@PreDestroy实例

    在Spring中,既可以实现InitializingBean和DisposableBean接口或在bean配置文件中指定 init-method 和 destroy-method 在初始化和销毁回调函 ...

  7. CH2101 可达性统计

    题意 给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量.N,M≤30000. 分析 有向无环图,可以按拓扑序逆序统计答案.可以用bitset维护可达性. 时间复杂度\(O(N ...

  8. selenium定位元素的8种方法

    By.id,By.name,By.tagName,By.className,By.linkText,By.partialLinkText,By.xpath,By.cssSelector <a h ...

  9. docker 数据卷 ---- 进阶篇

    笔者在<Docker 基础 : 数据管理>一文中介绍了 docker 数据卷(volume) 的基本用法.随着使用的深入,笔者对 docker 数据卷的理解与认识也在不断的增强.本文将在前 ...

  10. html5 data属性的使用

    html5 data属性定义和用法 <ul> <li data-animal-type="bird">Owl</li> <li data- ...