feat:场景视图添加属性编辑,添加轮廓显示

This commit is contained in:
m0_75251201
2025-11-13 16:24:49 +08:00
parent 9b91218973
commit 8fcbdc5649
95 changed files with 2836 additions and 445 deletions

View File

@@ -6,13 +6,35 @@ namespace SceneView
{
public class CanvasControl : MonoBehaviour
{
public SceneViewPanel? sceneViewPanel;
public const string ViewCanvasName = "_SceneViewCanvas";
public const string ShowAim = "";
public static Vector2 panelSize = new Vector2(500, 800);
public const string ViewCanvasName = "_SceneViewCanvas";
public const string ShowAim = "LOGO";
private static GameObject _focusObject;
public SceneViewPanel? sceneViewPanel;
public ParametersPanel? parametersPanel;
public static GameObject FocusGameObject
{
get => _focusObject;
set
{
if (value != _focusObject)
{
if (_focusObject)
{
var outline=_focusObject.GetComponent<Outline>();
if (outline)
Destroy(outline);
}
_focusObject = value;
_focusObject.AddComponent<Outline>();
OnChangeFocusObject?.Invoke(value);
}
}
}
private void Start()
{
InitCanvas();
@@ -20,17 +42,26 @@ namespace SceneView
public void Update()
{
if (Input.GetKeyDown(KeyCode.F2))
if (Input.GetKeyDown(KeyCode.F3))
{
Debug.Log("切换");
// Debug.Log("切换");
parametersPanel.gameObject.SetActive(!parametersPanel.gameObject.activeSelf);
sceneViewPanel.gameObject.SetActive(!sceneViewPanel.gameObject.activeSelf);
if (sceneViewPanel.gameObject.activeSelf)
{
sceneViewPanel.Refresh();
}
}
// if (sceneViewPanel.gameObject.activeSelf)
// {
// sceneViewPanel.Refresh();
// }
}
private void OnDestroy()
{
if (sceneViewPanel) Destroy(sceneViewPanel.gameObject);
if (parametersPanel) Destroy(parametersPanel.gameObject);
}
public static event Action<GameObject> OnChangeFocusObject;
private void InitCanvas()
{
var canvasObj = new GameObject(ViewCanvasName);
@@ -41,11 +72,13 @@ namespace SceneView
canvasObj.AddComponent<GraphicRaycaster>();
DontDestroyOnLoad(canvasObj);
sceneViewPanel=CreateSceneViewPanel(canvasObj.transform);
sceneViewPanel = CreateSceneViewPanel(canvasObj.transform);
parametersPanel = CreateParametersPanel(canvasObj.transform);
}
public static SceneViewPanel CreateSceneViewPanel(Transform parent)
{
var panelObj = new GameObject("SceneViewPanel");
var panelObj = new GameObject(ViewCanvasName);
panelObj.transform.SetParent(parent, false);
var sceneViewPanel = panelObj.AddComponent<SceneViewPanel>();
var panelImage = panelObj.AddComponent<Image>();
@@ -56,5 +89,15 @@ namespace SceneView
return sceneViewPanel;
}
public ParametersPanel CreateParametersPanel(Transform parent)
{
var panelObj = new GameObject(ViewCanvasName);
panelObj.transform.SetParent(parent, false);
var parametersViewPanel = panelObj.AddComponent<ParametersPanel>();
var panelImage = panelObj.AddComponent<Image>();
panelImage.color = new Color(0.5f, 0.5f, 0.5f, 0.3f);
return parametersViewPanel;
}
}
}