コード例 #1
0
 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);
 }
コード例 #2
0
        //指定の名前のオブジェクトのレイヤーを変更する
        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);
        }
コード例 #3
0
        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);
        }