feat(MeshRenderer): 实现MeshRenderer的可编辑组件
This commit is contained in:
51
Assets/Script/Gameplay/Edit/MeshRenderEditableController.cs
Normal file
51
Assets/Script/Gameplay/Edit/MeshRenderEditableController.cs
Normal 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
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ce12e438b058416294facd94fdcec417
|
||||
timeCreated: 1761183506
|
||||
Reference in New Issue
Block a user