void UpdateInteractive() { RaycastHit hit; if (Physics.Raycast(_mCamera.ScreenPointToRay(screenCenter), out hit)) { Debug.DrawLine(Camera.main.transform.position, hit.point); if (hit.collider != null) { //显示3D鼠标 if (!invisible) { SetMouse2D(false); } mouseIcon3D.transform.position = hit.point; mouseIcon3D.forward = -hit.normal; TDButtonItem tmpBtn = hit.transform.GetComponent <TDButtonItem>(); if (tmpBtn != null) { //同一个按钮不作操作 if (curBtn == tmpBtn) { return; } //从一个按钮射到另一个按钮 if (curBtn != null && curBtn != tmpBtn) { //上一个按钮执行退出操作 curBtn.MouseExit(); //隐藏鼠标倒计时 StopFillImage(); } curBtn = tmpBtn; //鼠标经过操作 curBtn.MouseHover(); if (!invisible) { var dis = Vector3.Distance(_mCamera.transform.position, hit.point); ShowMouseCountDown(tmpBtn.MouseSelect, dis); } } else { ClearBtnHover(); } } else { ClearBtnHover(); } } //显示鼠标 else { ClearBtnHover(); } }
void ClearBtnHover() { if (curBtn != null) { //上一个按钮执行退出操作 curBtn.MouseExit(); curBtn = null; } SetMouse2D(true); }