feat(Rigidbody Collider): 实现可编辑的Rigidbody 和 Collider

This commit is contained in:
2025-10-18 11:56:50 +08:00
parent 0716cbc0f7
commit ab403fac4b
6 changed files with 109 additions and 201 deletions

View File

@@ -0,0 +1,44 @@
using UnityEngine;
namespace Script.Gameplay.Facility
{
[RequireComponent(typeof(Collider))]
public class ColliderEditableController : MonoBehaviour, IEditableComponent
{
[SerializeField] private bool isActive = true;
public bool IsActive
{
get => isActive;
set
{
isActive = value;
// 具体被编辑的逻辑:开启或关闭碰撞体
if (_collider != null)
_collider.enabled = isActive;
}
}
public string ComponentName { get; set; } = "Collider";
public LockLevel LockLevel { get; } = LockLevel.Red;
private Collider _collider;
private void Awake()
{
_collider = GetComponent<Collider>();
// 应用序列化的初始状态
_collider.enabled = isActive;
}
#if UNITY_EDITOR
private void OnValidate()
{
// 在编辑器中即时生效
_collider = _collider == null ? GetComponent<Collider>() : _collider;
if (_collider != null)
_collider.enabled = isActive;
}
#endif
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 2791e039b8344f45ad6dc86f5188d82d
timeCreated: 1760758233

View File

@@ -0,0 +1,42 @@
using UnityEngine;
namespace Script.Gameplay.Facility
{
[RequireComponent(typeof(Rigidbody))]
public class RigidbodyEditableController : MonoBehaviour, IEditableComponent
{
[SerializeField] private bool isActive = true;
public bool IsActive
{
get => isActive;
set
{
isActive = value;
//具体被编辑的逻辑
_rigidbody.isKinematic = isActive;
}
}
public string ComponentName { get; set; } = "Rigidbody";
public LockLevel LockLevel { get; } = LockLevel.Red;
private Rigidbody _rigidbody;
private void Awake()
{
_rigidbody = GetComponent<Rigidbody>();
//应用序列化的初始状态
_rigidbody.isKinematic = isActive;
}
#if UNITY_EDITOR
private void OnValidate()
{
//在编辑器中即时生效
_rigidbody = _rigidbody == null ? GetComponent<Rigidbody>() : _rigidbody;
if (_rigidbody != null)
_rigidbody.isKinematic = isActive;
}
#endif
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 06015834a0da4561ba47d104b73171a4
timeCreated: 1760757148