用ECMAScript4 ( ActionScript3) 实现Unity的热更新 — 使用第三方组件

内容预览:
  • 地址:http://dotween.demigiant.com/download.php 将DOTween拖入Unity工程~
  • 打开热更新工程的Main.as,写入如下代码: package{ /** * ... * @author...~
  •    最后有些地方需要说明:DoTween这个项目使用了大量的扩展方法~

Unity开发中,常常会用到一些第三方组件。本文以实例介绍如何在热更新脚本中使用这些第三方组件。

首先说明几个基本步骤:

  1. 第三方组件通常是以dll或者源码方式提供的,它们本身往往无法热更。
  2. 我们在脚本中使用第三方组件之前,需要将它们也导出一份可供脚本使用的API
  3. 这个步骤可以通过脚本工程提供的一个配置文件和批处理完成。

本文以DOTween为例,说明如何在工程中使用DOTween。

  1. 首先,先创建一个Unity工程,并且创建热更新工程。如果您不会创建,请参考这里:
  2. 去DOTween的官网下载Unity插件包。地址:http://dotween.demigiant.com/download.php
  3. 将DOTween拖入Unity工程。
  4. 将DOTween的API导出为ActionScript3的API。打开热更新工程的genapi.config.xml文件,将DOTween.dll加入到配置文件中:
    <!--Configure DLLs to export-->
    <buildassemblys>

    <assembly value="C:Program FilesUnityEditorDataMonolibmono2.0System.dll"></assembly>
    <assembly value="C:Program FilesUnityEditorDataManagedUnityEngine.dll"></assembly>
    <assembly value="C:Program FilesUnityEditorDataUnityExtensionsUnityGUISystemUnityEngine.UI.dll"></assembly>

    <assembly value="E:/Unity/AS3Unity/AS3HotfixLibraryScriptAssembliesAssembly-CSharp.dll"></assembly>
    <assembly value="E:UnityAS3UnityAS3HotfixAssetsDOTweenDOTween.dll"></assembly>

    </buildassemblys>

  5. 执行CreateUnityAPI.bat,导出API代码。
  6. 打开热更新工程的Main.as,写入如下代码:
    package
    {
    [Doc]
    /**
    * ...
    * @author
    */
    public class Main
    {
    public function Main()
    {

    }

    public function update():void
    {

    }

    }

    }
    import dg.tweening.DOTween;
    import dg.tweening.Tween;
    import unityengine.Camera;
    import unityengine.GameObject;
    import unityengine.MonoBehaviour;
    import unityengine.Vector3;

    class doposition extends MonoBehaviour
    {
    var colorTween:Tween, emissionTween:Tween, offsetTween:Tween;
    private function Start()
    {
    var target:GameObject = GameObject.find("Cube");

    //调用Double类型的缓动。
    DOTween.to_(
    //属性获取器
    function():Number{
    return target.transform.position.z;
    }
    ,
    //属性设置器
    function(z:Number):void
    {
    target.transform.position
    = new Vector3(0, 0, z);
    }
    ,
    //移动到10
    10
    ,
    //在3秒内移动到位
    3
    );

    }
    }

    Camera.main.gameObject.addComponent(doposition);

  7. 点击编译后,在Unity中可看到效果:立方体在3秒内移动到了0,0,10的位置。

 

 最后有些地方需要说明:DoTween这个项目使用了大量的扩展方法。但是ActionScript3脚本是不能直接支持扩展方法的。但是我们可以使用原型链扩展使得扩展方法看起来可以被调用。

另外,DoTween的扩展方法中使用了大量泛型方法定义。由于需要热更新的平台无法动态创建类型(例如IOS),因此泛型方法定义不能直接在脚本中使用。我们必须在主工程中写一些工具方法作为桥梁。

 

以上就是:用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 使用第三方组件 的全部内容。

本站部分内容来源于互联网和用户投稿,如有侵权请联系我们删除,谢谢。
Email:[email protected]


0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论