feat(Rigidbody Collider): 实现可编辑的Rigidbody 和 Collider
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2791e039b8344f45ad6dc86f5188d82d
|
||||
timeCreated: 1760758233
|
@@ -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
|
||||
}
|
||||
}
|
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 06015834a0da4561ba47d104b73171a4
|
||||
timeCreated: 1760757148
|
Reference in New Issue
Block a user