在UGUI中,所有接收EventTrigger事件的GameObject均需要有graphic组件。比如我们需要做一个不显示的矩形控件框来接收鼠标点击事件,那么有一种丑陋的方法是添加一个image组件,然后将颜色设为透明。
但明显这样的做法不符合我们洁癖程序员的风格,而且还会占用额外的DrawCall性能开销。我们需要一种既能够完整的接收事件,又不消耗GC的方法。
经实验,以下代码可行。
using UnityEngine;
using UnityEngine.UI;
/// A concrete subclass of the Unity UI `Graphic` class that just skips drawing.
/// Useful for providing a raycast target without actually drawing anything.
public class NonDrawingGraphic : Graphic
{
public override void SetMaterial