public AdvCommandChangeLayer(StringGridRow row, AdvSettingDataManager dataManager) : base(row) { this.objectName = ParseCell <string>(AdvColumnName.Arg1); this.repositionType = ParseCellOptional(AdvColumnName.Arg2, AdvChangeLayerRepositionType.KeepGlobal); this.layerName = ParseCell <string>(AdvColumnName.Arg3); if (!dataManager.LayerSetting.Contains(layerName)) { Debug.LogError(row.ToErrorString("Not found " + layerName + " Please input Layer name")); } fadeTime = ParseCellOptional(AdvColumnName.Arg6, 0.2f); }
//指定の名前のオブジェクトのレイヤーを変更する public void ChangeLayer(string objectName, string layerName, AdvChangeLayerRepositionType repositionType, float fadeOutTime) { AdvGraphicLayer newLayer = FindLayer(layerName); if (newLayer == null) { Debug.LogErrorFormat("{0} is not found", layerName); return; } AdvGraphicGroup group = null; AdvGraphicObject targetObject = null; foreach (var keyValue in Groups) { group = keyValue.Value; targetObject = group.FindObject(objectName); if (targetObject != null) { break; } } if (targetObject == null) { Debug.LogErrorFormat("{0} is not found", objectName); return; } AdvGraphicLayer oldLayer = targetObject.Layer; if (oldLayer == newLayer) { return; } bool isDefaultObject = (oldLayer.DefaultObject == targetObject); if (group.Type == AdvLayerSettingData.LayerType.Sprite) { isDefaultObject = false; } newLayer.ChangeLayer(isDefaultObject, targetObject, repositionType, fadeOutTime); oldLayer.Remove(targetObject); }
public void ChangeLayer(bool isDefaultObject, AdvGraphicObject targetObject, AdvChangeLayerRepositionType repositionType, float fadeOutTime) { if (isDefaultObject) { if (DefaultObject != null) { FadeOut(DefaultObject.name, fadeOutTime); } DefaultObject = targetObject; } Transform targetObjectTransform = targetObject.transform; //新しいレイヤーに移動 switch (repositionType) { case AdvChangeLayerRepositionType.KeepLocal: //ローカル座標を保持 targetObject.transform.SetParent(this.transform, false); break; case AdvChangeLayerRepositionType.ResetLocal: //リセット targetObject.transform.SetParent(this.transform); targetObjectTransform.localPosition = Vector3.zero; targetObjectTransform.localEulerAngles = Vector3.zero; targetObjectTransform.localScale = Vector3.one; break; default: case AdvChangeLayerRepositionType.KeepGlobal: //何もしない targetObject.transform.SetParent(this.transform); break; } targetObject.gameObject.layer = this.gameObject.layer; targetObject.Layer = this; this.Add(targetObject); }