Unity开发过程中,不可避免的存在的耦合的问题,特别是当处理的对象特别多的时候,更容易耦合。
开发中可以通过运用委托来进行一定的解耦,比如下面的的示例。
一个简单的场景,按下1键时亮起灯1,按下2键时亮起2灯,按下3键时亮起3灯,每次亮灯时都要关闭其他的灯。
结合委托,代码如下
灯1代码如下:
public class LightController1 : MonoBehaviour
{
private Light light { set; get; }
private Action turnOtherLightsOff { set; get; }
public void addCb(Action cb) { turnOtherLightsOff = cb; }
void Awake()
{
light = GetComponent<Light>();
}
void Update()
{
if (!Input.GetKeyDown(KeyCode.Alpha1)) return;
if (turnOtherLightsOff !=