继上次分析了热更新的Demo后,这次来介绍如何在热更新代码中使用MonoBehaviour。
MonoBehaviour挂载到GameObject对象上的脚本的基类。平常Unity开发时,简单的做法就是编写一个继承自MonoBehaviour的脚本,将它挂载到要操纵的GameObject上,赋予它各种行为。
当然,在某些大型项目中,可能并不推荐导出挂脚本的方式,但是本文旨在介绍如何在脚本中继承并编写MonoBehaviour,暂时忽略这个问题。
用脚本创建一个MonoBehaviour。并挂载到某个物体上,在Start方法中使用协程加载 baidu 的首页的html,然后将它的html代码显示到文本框上。
1. 这里我们定位到在UnityEngine.UnityWebRequestWWWModule.dll中
2. 打开热更项目的genapi.config.xml,将这个dll配置到以下配置节中:
3. 执行 bat/CreateUnityAPI.bat ,再次生成Unity的API。如此,即可在热更新项目中使用WWW相关的类型
<!--Configure DLLs to export-->
<buildassemblys>
<assembly value="D:\Program Files\Unity\Editor\Data\Mono\lib\mono\2.0\System.dll"></assembly>
<assembly value="D:\Program Files\Unity\Editor\Data\Managed\UnityEngine\UnityEngine.CoreModule.dll"></assembly>
<assembly value="D:\Program Files\Unity\Editor\Data\Managed\UnityEngine\UnityEngine.UnityWebRequestWWWModule.dll"></assembly>
<assembly value="D:\Program Files\Unity\Editor\Data\UnityExtensions\Unity\GUISystem\UnityEngine.UI.dll"></assembly>
<assembly value="F:/ASTool_UnityTest/AS3HotFix_WWW\Library\ScriptAssemblies\Assembly-CSharp.dll"></assembly>
</buildassemblys>
1 package
2 {
3
4 [Doc]
5 /**
6 * ...
7 * @author
8 */
9 public class Main
10 {
11
12 public function Main()
13 {
14 }
15
16 public function update():void
17 {
18
19 }
20 }
21
22 }
23
24 //写在包外的代码,会在Main这个类第一次被实例化之前执行一次。
25
26 import system.collections.IEnumerator;
27 import unityengine.Camera;
28 import unityengine.GameObject;
29 import unityengine.MonoBehaviour;
30 import unityengine.Time;
31 import unityengine.WWW;
32 import unityengine.ui.Text;
33
34 //定义一个继承自MonoBehaviour的类型。
35 class baidutest extends MonoBehaviour
36 {
37 //Start方法会在Update前调用一次。
38 function Start():IEnumerator
39 {
40 //创建WWW对象,并访问 www.baidu.com
41 var www:WWW = new WWW("http://www.baidu.com");
42 while ( !www.isDone)
43 {
44 //更新UI元素.
45 Text( GameObject.find("Text").getComponent(Text)).text = "loading from baidu " + Time.frameCount;
46 //使用 yield关键字,可以使用Unity协程
47 yield return www;
48 }
49
50
51 //加载完毕后,将html内容显示到UI上。
52 Text( GameObject.find("Text").getComponent(Text)).text = www.text.substr(1024,1024);
53 //销毁WWW对象。
54 www.dispose();
55
56 }
57
58 }
59
60 //在主相机上挂载脚本中定义的baidutest。
61 Camera.main.gameObject.addComponent(baidutest);
如此,即实现了在脚本中使用MonoBehaviour。
我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1l1wacrkzlbqn