51 lines
1.3 KiB
C#
51 lines
1.3 KiB
C#
|
|
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
|
||
|
|
}
|
||
|
|
}
|