feat(MeshRenderer): 实现MeshRenderer的可编辑组件

This commit is contained in:
2025-10-23 09:45:56 +08:00
parent e0054394f5
commit 4ef8430c6b
14 changed files with 230 additions and 12 deletions

View File

@@ -0,0 +1,51 @@
using UnityEngine;
using Script.Gameplay.Interface;
namespace Script.Gameplay.Edit
{
[RequireComponent(typeof(MeshRenderer))]
public class MeshRenderEditableController : MonoBehaviour, IEditableComponent
{
[SerializeField] private bool isEnableEdit = true;
public bool IsEnableEdit
{
get => isEnableEdit;
set => isEnableEdit = value;
}
[SerializeField] private bool isOpenInEditor = true;
public bool IsOpenInEditor
{
get => isOpenInEditor;
set
{
isOpenInEditor = value;
if (_meshRender != null)
_meshRender.enabled = isOpenInEditor;
}
}
public string ComponentName { get; set; } = "MeshRenderer";
private MeshRenderer _meshRender;
private void Awake()
{
_meshRender = GetComponent<MeshRenderer>();
// 应用序列化的初始状态
_meshRender.enabled = IsOpenInEditor;
}
#if UNITY_EDITOR
private void OnValidate()
{
// 在编辑器中即时生效
_meshRender = _meshRender == null ? GetComponent<MeshRenderer>() : _meshRender;
if (_meshRender != null)
_meshRender.enabled = IsOpenInEditor;
}
#endif
}
}