Unity开发中,常常会用到一些第三方组件。本文以实例介绍如何在热更新脚本中使用这些第三方组件。
首先说明几个基本步骤:
本文以DOTween为例,说明如何在工程中使用DOTween。
<!--Configure DLLs to export-->
<buildassemblys>
<assembly value="C:\Program Files\Unity\Editor\Data\Mono\lib\mono\2.0\System.dll"></assembly>
<assembly value="C:\Program Files\Unity\Editor\Data\Managed\UnityEngine.dll"></assembly>
<assembly value="C:\Program Files\Unity\Editor\Data\UnityExtensions\Unity\GUISystem\UnityEngine.UI.dll"></assembly>
<assembly value="E:/Unity/AS3Unity/AS3Hotfix\Library\ScriptAssemblies\Assembly-CSharp.dll"></assembly>
<assembly value="E:\Unity\AS3Unity\AS3Hotfix\Assets\DOTween\DOTween.dll"></assembly>
</buildassemblys>
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);
最后有些地方需要说明:DoTween这个项目使用了大量的扩展方法。但是ActionScript3脚本是不能直接支持扩展方法的。但是我们可以使用原型链扩展使得扩展方法看起来可以被调用。
另外,DoTween的扩展方法中使用了大量泛型方法定义。由于需要热更新的平台无法动态创建类型(例如IOS),因此泛型方法定义不能直接在脚本中使用。我们必须在主工程中写一些工具方法作为桥梁。