龙骨的官方API只提供了播放animation的方法,然而若是采用龙骨的逐帧动画,则不存在切换animation的概念,那么就只能通过切换不同的骨架(Armature)来控制同一个帧动画龙骨文件的不同动画。而切换骨架的方法,龙骨作者是写到了UnityEditor里面,也是醉了。
public static void ChangeArmatureData(UnityArmatureComponent _armatureComponent, string armatureName, string dragonBonesName)
{
bool isUGUI = _armatureComponent.isUGUI;
UnityDragonBonesData unityData = null;
Slot slot = null;
if (_armatureComponent.armature != null)
{
unityData = _armatureComponent.unityData;
slot = _armatureComponent.armature.parent;
_armatureComponent.Dispose(false);
UnityFactory.factory._dragonBones.AdvanceTime(0.0f);
_armatureComponent.unityData = unityData;
}
_armatureComponent.armatureName = armatureName;
_armatureComponent.isUGUI = isUGUI;
_armatureComponent = UnityFactory.factory.BuildArmatureComponent(_armatureComponent.armatureName, dragonBonesName, null, _armatureComponent.unityData.dataName, _armatureComponent.gameObject, _armatureComponent.isUGUI);
if (slot != null)
{
slot.childArmature = _armatureComponent.armature;
}
_armatureComponent.sortingLayerName = _armatureComponent.sortingLayerName;
_armatureComponent.sortingOrder = _armatureComponent.sortingOrder;
}
因此,找个地方把该方法重新抄一遍,经测试可行。