using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using System.IO;
|
using System;
|
#if UNITY_EDITOR
|
using UnityEditor;
|
#endif
|
public class TreasureMeridianConfig : ScriptableObject
|
{
|
[SerializeField] int m_TreasureId = 0;
|
[SerializeField] int m_StagePointCount = 0;
|
[SerializeField] List<StagePoint> m_StagePoints = new List<StagePoint>();
|
|
public StagePoint this[int _index]
|
{
|
get
|
{
|
if (_index < m_StagePoints.Count)
|
{
|
return m_StagePoints[_index];
|
}
|
return null;
|
}
|
}
|
|
public int treasureId
|
{
|
get { return m_TreasureId; }
|
set { m_TreasureId = value; }
|
}
|
|
public int stagePointNum
|
{
|
get
|
{
|
return m_StagePointCount;
|
}
|
set
|
{
|
m_StagePointCount = value;
|
if (m_StagePointCount != m_StagePoints.Count)
|
{
|
if (m_StagePointCount > m_StagePoints.Count)
|
{
|
for (int i = m_StagePoints.Count; i < m_StagePointCount; i++)
|
{
|
m_StagePoints.Add(new StagePoint());
|
}
|
}
|
else
|
{
|
for (int i = m_StagePoints.Count - 1; i >= m_StagePointCount; i--)
|
{
|
StagePoint _point = m_StagePoints[i];
|
m_StagePoints.RemoveAt(i);
|
_point = null;
|
}
|
}
|
}
|
}
|
}
|
|
[Serializable]
|
public class StagePoint
|
{
|
public Vector2 position = Vector2.zero;
|
public float scale = 1f;
|
public int effect = 0;
|
public float scaleTweenDelay = 0f;
|
public float scaleTweenTo = 0.5f;
|
}
|
|
#if UNITY_EDITOR
|
public List<RectTransform> m_Meridians = new List<RectTransform>();
|
#endif
|
}
|
|
#if UNITY_EDITOR
|
[CustomEditor(typeof(TreasureMeridianConfig))]
|
public class TreasureMeridianConfigEditor : Editor
|
{
|
public override void OnInspectorGUI()
|
{
|
var _target = target as TreasureMeridianConfig;
|
GUILayout.BeginHorizontal();
|
GUILayout.Label("法宝id");
|
_target.treasureId = EditorGUILayout.IntField(_target.treasureId);
|
GUILayout.FlexibleSpace();
|
GUILayout.EndHorizontal();
|
|
GUILayout.BeginHorizontal();
|
GUILayout.Label("经络个数");
|
_target.stagePointNum = EditorGUILayout.IntField(_target.stagePointNum);
|
GUILayout.FlexibleSpace();
|
GUILayout.EndHorizontal();
|
|
for (int i = 0; i < _target.stagePointNum; i++)
|
{
|
_target[i].position = EditorGUILayout.Vector2Field(StringUtility.Contact("经络", i), _target[i].position);
|
_target[i].scale = EditorGUILayout.FloatField("缩放比例", _target[i].scale);
|
_target[i].effect = EditorGUILayout.IntField("特效ID", _target[i].effect);
|
_target[i].scaleTweenDelay = EditorGUILayout.FloatField("缩放延迟", _target[i].scaleTweenDelay);
|
_target[i].scaleTweenTo = EditorGUILayout.FloatField("缩放大小", _target[i].scaleTweenTo);
|
GUILayout.Space(15);
|
}
|
|
if (GUILayout.Button("在界面上生成"))
|
{
|
_target.m_Meridians.Clear();
|
GameObject parent = GameObject.Find("TreasureLevelUpWin/Container_Default/Container_Display/Container_Level/Container_Meridian");
|
if (parent != null)
|
{
|
for (int i = 0; i < _target.stagePointNum; i++)
|
{
|
GameObject go = new GameObject(i.ToString());
|
_target.m_Meridians.Add(go.AddMissingComponent<RectTransform>());
|
_target.m_Meridians[i].SetParentEx(parent.transform, Vector3.zero, Quaternion.identity, Vector3.one);
|
_target.m_Meridians[i].localPosition = _target[i].position;
|
_target.m_Meridians[i].localScale = _target[i].scale * Vector3.one;
|
}
|
}
|
}
|
|
if (_target.m_Meridians.Count > 0
|
&& _target.m_Meridians[0] == null)
|
{
|
_target.m_Meridians.Clear();
|
}
|
for (int i = 0; i < _target.m_Meridians.Count; i++)
|
{
|
if (i < _target.stagePointNum)
|
{
|
_target[i].position = _target.m_Meridians[i].localPosition;
|
_target[i].scale = _target.m_Meridians[i].localScale.x;
|
}
|
}
|
}
|
|
[MenuItem("策划工具/生成法宝经络配置文件")]
|
static void BuildMeridianConfig()
|
{
|
TreasureMeridianConfig _config = CreateInstance<TreasureMeridianConfig>();
|
string _path = StringUtility.Contact("Assets/ResourcesOut/Refdata/ScriptableObject/SoTreasureMeridian/",
|
"SoTreasureMeridian_",
|
".asset");
|
AssetDatabase.CreateAsset(_config, _path);
|
AssetDatabase.Refresh();
|
ProjectWindowUtil.ShowCreatedAsset(_config);
|
}
|
}
|
#endif
|