private void SetSelectedNode() { uGUICrossNodeBase currentNode = null; RaycastHit hit; var forward = _mainCamera.transform.forward; if (Physics.Raycast(transform.position, forward, out hit, 1000)) { currentNode = hit.collider.gameObject.GetComponent <uGUICrossNodeBase>(); } if (currentNode != _selectedNode) { _haveGrab = false; if (_selectedNode != null) { _selectedNode.SetSelect(false); } _selectedNode = currentNode; _enterTime = Time.time; if (_selectedNode != null) { _selectedNode.SetSelect(true); } } }
void Update() { SetSelectedNode(); if (_haveGrab) { return; } _rotateSprite.gameObject.SetActive(false); _dotSprite.gameObject.SetActive(true); //_rotateSprite.fillAmount = 0; if (_selectedNode != null && _selectedNode.Clickable) { var selectTime = Time.time - _enterTime; if (CheckTouch()) { selectTime = float.MaxValue; } if (selectTime > _selectedNode.HoverTime) { if (selectTime - _selectedNode.HoverTime < _selectedNode.ClickTime) { if (_selectedNode.ShowWaiting) { _rotateSprite.gameObject.SetActive(true); _dotSprite.gameObject.SetActive(false); } var passedClickTime = selectTime - _selectedNode.HoverTime; image.fillAmount = passedClickTime / _selectedNode.ClickTime; } else { _selectedNode.OnClick(); if (_selectedNode.Grabable) { _haveGrab = true; } else { _selectedNode = null; } } } } }