public override void DoCommand(AdvEngine engine) { float fadeTime = engine.Page.ToSkippedTime(this.time); AdvGraphicGroup characterManager = engine.GraphicManager.CharacterManager; if (string.IsNullOrEmpty(this.name)) { characterManager.FadeOutAll(fadeTime); } else { AdvGraphicLayer layer = characterManager.FindLayerFromObjectName(this.name); if (layer != null) { layer.FadeOut(this.name, fadeTime); } else { layer = characterManager.FindLayer(this.name); if (layer != null) { layer.FadeOutAll(fadeTime); } } } }
//キャラクターオブジェクトとして、特殊な表示をする internal AdvGraphicObject DrawCharacter(string layerName, string name, AdvGraphicOperaitonArg arg) { //既に同名のグラフィックがあるなら、そのレイヤーを取得 AdvGraphicLayer oldLayer = null; foreach (var keyValue in layers) { if (keyValue.Value.IsEqualDefaultGraphicName(name)) { oldLayer = keyValue.Value; break; } } //レイヤー名の指定がある場合、そのレイヤーを探す AdvGraphicLayer layer = FindLayer(layerName); if (layer == null) { //レイヤーがない場合は、旧レイヤーかデフォルトレイヤーを使う layer = (oldLayer == null) ? DefaultLayer : oldLayer; } //レイヤー変更があるか bool changeLayer = (oldLayer != layer && oldLayer != null); //レイヤー変更ないなら、描画しておわり if (!changeLayer) { //レイヤー上にデフォルトオブジェクトとして表示 return(layer.DrawToDefault(name, arg)); } Vector3 oldScale = Vector3.one; Vector3 oldPosition = Vector3.zero; Quaternion oldRotation = Quaternion.identity; //レイヤーが変わる場合は、昔のほうを消す AdvGraphicObject oldObj; if (oldLayer.CurrentGraphics.TryGetValue(name, out oldObj)) { oldScale = oldObj.rectTransform.localScale; oldPosition = oldObj.rectTransform.localPosition; oldRotation = oldObj.rectTransform.localRotation; oldLayer.FadeOut(name, arg.GetSkippedFadeTime(manager.Engine)); } //レイヤー上にデフォルトオブジェクトとして表示 AdvGraphicObject obj = layer.DrawToDefault(name, arg); //ローカルTransform値を引き継ぐ処理 if (!manager.ResetCharacterTransformOnChangeLayer) { obj.rectTransform.localScale = oldScale; obj.rectTransform.localPosition = oldPosition; obj.rectTransform.localRotation = oldRotation; } return(obj); }
//指定名のオブジェクトを非表示(フェードアウト)する internal virtual void FadeOut(string name, float fadeTime) { AdvGraphicLayer layer = FindLayerFromObjectName(name); if (layer != null) { layer.FadeOut(name, fadeTime); } }
public override void DoCommand(AdvEngine engine) { float time = engine.Page.ToSkippedTime(this.fadeTime); switch (name) { case AdvCommandKeyword.AllSpriteLayers: engine.GraphicManager.SpriteManager.FadeOutAll(time); break; case AdvCommandKeyword.AllSpriteObjects: engine.GraphicManager.FadeOutAllObjects(AdvGraphicObjectType.Sprite, time); break; default: //オブジェクト名からレイヤーを探す AdvGraphicLayer layer = engine.GraphicManager.FindLayerByObjectName(name); if (layer != null) { //指定のオブジェクトを消す layer.FadeOut(name, time); } else { //レイヤー名として、レイヤー以下のスプライトを消す layer = engine.GraphicManager.FindLayer(name); if (layer != null) { //消す layer.FadeOutAllObjects(AdvGraphicObjectType.Sprite, time); } else { Debug.LogError("Not found " + name + " Please input sprite name or layer name"); } } break; } }
//キャラクターオブジェクトとして、特殊な表示をする internal AdvGraphicObject DrawCharacter(string layerName, string name, AdvGraphicOperaitonArg arg) { //既に同名のグラフィックがあるなら、そのレイヤーを取得 AdvGraphicLayer oldLayer = layers.Find((item) => (item.IsEqualDefaultGraphicName(name))); //レイヤー名の指定がある場合、そのレイヤーを探す AdvGraphicLayer layer = layers.Find((item) => (item.SettingData.Name == layerName)); if (layer == null) { //レイヤーがない場合は、旧レイヤーかデフォルトレイヤーを使う layer = (oldLayer == null) ? DefaultLayer : oldLayer; } //レイヤーが変わる場合は、昔のほうを消す if (oldLayer != layer && oldLayer != null) { oldLayer.FadeOut(name, arg.GetSkippedFadeTime(manager.Engine)); } //レイヤー上にデフォルトオブジェクトとして表示 return(layer.DrawToDefault(name, arg)); }