57 lines
1.6 KiB
C#
57 lines
1.6 KiB
C#
using UnityEngine;
|
|
|
|
|
|
#if UNITY_EDITOR
|
|
using UnityEditor;
|
|
using UnityEditor.SceneManagement;
|
|
using UnityEngine.SceneManagement;
|
|
#endif
|
|
|
|
namespace MkeyFW
|
|
{
|
|
public class SetTextPosition : MonoBehaviour
|
|
{
|
|
public float dist = 2.5f;
|
|
public float dy = 0;
|
|
|
|
public void SetPostion()
|
|
{
|
|
Sector[] sectors = GetComponentsInChildren<Sector>();
|
|
int length = sectors.Length;
|
|
float dAngleDeg = 360f / length;
|
|
float radY = dy / dist;
|
|
|
|
// set position
|
|
for (int i = 0; i < length; i++)
|
|
{
|
|
sectors[i].transform.parent = null;
|
|
float angleDeg = 90.0f - i * dAngleDeg;
|
|
float angleRad = angleDeg * Mathf.Deg2Rad;
|
|
sectors[i].transform.position = transform.position + new Vector3(dist * Mathf.Cos(angleRad + radY), dist * Mathf.Sin(angleRad + radY), 0);
|
|
sectors[i].transform.localEulerAngles = new Vector3(0, 0, angleDeg);
|
|
sectors[i].transform.parent = transform;
|
|
}
|
|
}
|
|
}
|
|
|
|
#if UNITY_EDITOR
|
|
[CustomEditor(typeof(SetTextPosition))]
|
|
public class SetTextPositionEditor : Editor
|
|
{
|
|
public override void OnInspectorGUI()
|
|
{
|
|
SetTextPosition setText = (SetTextPosition)target;
|
|
serializedObject.Update();
|
|
|
|
DrawDefaultInspector();
|
|
if (GUILayout.Button("Arrange sector text"))
|
|
{
|
|
setText.SetPostion();
|
|
EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene());
|
|
}
|
|
|
|
}
|
|
}
|
|
#endif
|
|
}
|