最后点击 UI 的时候会出现射线被锁定到 UI 上面的问题, 也就是点击 Ground 的时候弹出窗口点击购买无法更新玩家的价格, 这里先采用比较简单的遮挡 UI 方法后续看看是否有其他方法处理:
using UnityEngine;
using UnityEngine.EventSystems;// 引入 Unity 事件系统
// <summary>
/// 游戏控制器类
/// </summary>
public class GameController : MonoBehaviour{
/// <summary>
/// 更新方法
/// </summary>
void Update(){
// EventSystem.current.IsPointerOverGameObject 用来判断目前鼠标是不是锁定在 UI 层上
// 实际上判断鼠标是否在放置在含有 Canvas 组件对象上( 创建 UI 时候自动附加在 UI 的根部件 )
if (!EventSystem.current.IsPointerOverGameObject()) {
// 这样就能成功锁定到射线指定的 Ground 对象
_ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(_ray , out _hit , rayDistance)) {
if (_hit.collider.CompareTag("Ground")) {
activeGroundProp = _hit.collider.GetComponent<GroundProperties>();
}
}
}
}
}