#if FAIRYGUI_DRAGONBONES using UnityEngine; using DragonBones; namespace FairyGUI { /// /// /// public partial class GLoader3D : GObject { UnityArmatureComponent _armatureComponent; /// /// /// /// public UnityArmatureComponent armatureComponent { get { return _armatureComponent; } } /// /// /// /// /// /// /// public void SetDragonBones(DragonBonesData asset, int width, int height, Vector2 anchor) { if (_armatureComponent != null) FreeDragonBones(); _armatureComponent = UnityFactory.factory.BuildArmatureComponent(asset.armatureNames[0], asset.name, null, asset.name); _armatureComponent.gameObject.transform.localScale = new Vector3(100, 100, 1); _armatureComponent.gameObject.transform.localPosition = new Vector3(anchor.x, -anchor.y, 0); SetWrapTarget(_armatureComponent.gameObject, true, width, height); var ct = _armatureComponent.color; ct.redMultiplier = _color.r; ct.greenMultiplier = _color.g; ct.blueMultiplier = _color.b; _armatureComponent.color = ct; OnChangeDragonBones(null); } protected void LoadDragonBones() { DragonBonesData asset = (DragonBonesData)_contentItem.skeletonAsset; if (asset == null) return; SetDragonBones(asset, _contentItem.width, _contentItem.height, _contentItem.skeletonAnchor); } protected void OnChangeDragonBones(string propertyName) { if (_armatureComponent == null) return; if (propertyName == "color") { var ct = _armatureComponent.color; ct.redMultiplier = _color.r; ct.greenMultiplier = _color.g; ct.blueMultiplier = _color.b; _armatureComponent.color = ct; return; } if (!string.IsNullOrEmpty(_animationName)) { if (_playing) _armatureComponent.animation.Play(_animationName, _loop ? 0 : 1); else _armatureComponent.animation.GotoAndStopByFrame(_animationName, (uint)_frame); } else _armatureComponent.animation.Reset(); } protected void FreeDragonBones() { if (_armatureComponent != null) { _armatureComponent.Dispose(); if (Application.isPlaying) GameObject.Destroy(_armatureComponent.gameObject); else GameObject.DestroyImmediate(_armatureComponent.gameObject); } } protected void OnUpdateDragonBones(UpdateContext context) { if (_armatureComponent != null) { var ct = _armatureComponent.color; ct.alphaMultiplier = context.alpha * _content.alpha; _armatureComponent.color = ct; } } } } #endif