Unity By Reflection Update Scripts
App热更新需求
我正在使用Unity 3D开发一个Android的应用,它会下载AssetBundles并加载它们的内容,但由于AssetBundles不能包含脚本,我将使用预编译的C#脚本,并使用Mono反射来加载它(我不知道我会怎样,但看着办吧) 。但现在我不知道该如何预编译.cs文件,所以有谁都可以帮助我?
思路分析
把你的脚本通过MonoDevelop/VisualStudio编译成.dll,将你script.dll复制到你的unity project的Resource文件夹,把扩展名从xx.dll改成xx.bytes
根据这个手册,我可以包括脚本,bytes(二进制数据),并通过反射加载它们。
我了解所有的步骤,除了:我要怎样编译单个文件得到其字节码?是否有任何教程/帮助?
Solution(解决办法)
1.Open Monodevelop and create C#Library project
2.Add UnityEngine.dll to References
3.Compile your scripts
4.Copy bin/xx.dll from your library project folder to Assets of your unity project and change extension from .dll to .bytes
That's all.
原理分析
把Scripts打包进AssetBundles中,在游戏运行时动态下载Assetbundle,通过Reflection来加载并执行其中的方法。
在Android平台是可行的,但IOS是不可行的,因为Apple不允许这么做。
Unity By Reflection Update Scripts的更多相关文章
- Unity中让Update中的方法执行一次
Unity中让Update中的方法执行一次 Unity中,很多时候,代码需要放在Update中时刻监测状态,一旦状态符合,又只需要代码执行一次:其实可以通过设置控制量的方式,让代码只执行一次:方法:设 ...
- Unity FixedUpdate 与 Update 的线程关系实验
先上结论:FixedUpdate 与 Update 在同一个线程上. 实验过程: 1.打印 FixedUpdate 和 Update 的线程编号 void FixedUpdate () { Debug ...
- Unity 脚本中update,fixedupdate,lateupdate等函数的执行顺序
结论 通过一个例子得出的结论是:从先到后被执行的函数是 Awake->Start->FixedUpdate->Update->LateUpdate->OnGUI. 示例 ...
- Unity[C#] Reflection Use
Reflection Reflection是C#程序员的一个最有力工具 最常用的例子来说明反射的用处是一个插件系统.假设你正在创建一个 接受用户创建 的扩展程序,有没有办法预先知道哪些方法这个扩展 ...
- unity中的update、Lateupdate和FixedUpdate。
MonoBehaviour.Update 更新 当MonoBehaviour启用时,其Update在每一帧被调用. MonoBehaviour.FixedUpdate 固定更新 当MonoBehavi ...
- unity 的reflection probe和environmentmap
unity做了个很恶心的事情 unity_SpecCube0这里如果在reflectionprobe范围内就传reflectionprobe 如果在probe范围外这里就传environmap 在GI ...
- 关于unity中的update、Lateupdate和FixedUpdate
MonoBehaviour.Update 更新 当MonoBehaviour启用时,其Update在每一帧被调用. MonoBehaviour.FixedUpdate 固定更新 当MonoBehavi ...
- Unity Webplayer installation error- Unity Webplayer update finished, but installed..
https://forum.unity3d.com/threads/unity-webplayer-installation-error-unity-webplayer-update-finished ...
- JSBinding+Bridge.NET:Unity游戏热更新方案
老版本链接如下:http://www.cnblogs.com/answerwinner/p/4469021.html 新用户不要再使用老版本了. 新版本 JSBinding 将抛弃 SharpKit ...
随机推荐
- psql工具使用(二)
所有psql命令都以 \ 开头 一.使用psql -l查看有哪些数据库: -bash-4.2$ psql -l List of databases Name | Owner | Encodin ...
- A Personal Understanding to Matrix Transformation in Graphics
A Personal Understanding to Matrix Transformation in Graphics--------------------------------------- ...
- Java设计模式学习记录-适配器模式
前言 之前已经将五个创建型设计模式介绍完了,从这一篇开始介绍结构型设计模式,适配器模式就是结构型模式的一种,适配器要实现的效果是把“源”过渡到“目标”. 适配器模式 在开发过程中,使用一个已经存在的类 ...
- angularjs文档下载
路过 存文件而已
- 下拉加载更多DEMO(js实现)
项目的一个前端页面展示已购买商品时,要求能下拉加载更多.花了点时间研究这个功能,以前没做过. 首先需要给div加scroll事件,监听滚动条滚动动作.那何时触发加载动作呢?当滚动条滚到底的时候.如何判 ...
- C# Quartz的配置
1. 介绍 Quartz为后台工作者提供了得便利,我们下面介绍一下它的配置.本文配置主要针对服务程序的配置. 但是在做下面配置之前,要安装包 Install-Package Quartz 2. Qua ...
- TabControl控件在左侧绘制tabPage页面
效果图:
- [转]DevOps的三大原则
本文转自:https://blog.csdn.net/difffate/article/details/77542768 DevOps的出现有其必然性.在软件开发生命周期中,遇到了两次瓶颈. 第一次瓶 ...
- Mysql技能之【性能优化方案】
两个SHOW命令 Mysql服务状态 SHOW GLOBAL STATUS; Mysql配置信息 SHOW VARIABLES: 慢查询 show variables like '%slow%'; s ...
- 未能找到路径E:\项目文件\W\vbc.exe”的一部分
网上找的说要引用Microsoft.CodeDom.Providers.DotNetCompilerPlatform, 我已经引用了,是差roslyn文件夹,从别的项目考一份过来就好了