éƒå·unity3dåŸ¹è® UGUIé•¿æŒ‰ç›æµ‹çš„ä¸¤ç§æ–¹æ³•
æ¥æºï¼š
奇酷教育 å表äºï¼š
éƒå·unity3dåŸ¹è® UGUIé•¿æŒ‰ç›æµ‹çš„ä¸¤ç§æ–¹æ³•,奇酷(www qikuedu com)è€å¸ˆæ€»ç»ä¸¤ç§åŠæ³•如下: 简å•çš„demo,éšä¾¿å»ºå‡ 个UI,把
éƒå·unity3dåŸ¹è® UGUIé•¿æŒ‰ç›æµ‹çš„ä¸¤ç§æ–¹æ³•,
奇酷(www.qikuedu.com)è€å¸ˆæ€»ç»ä¸¤ç§åŠæ³•如下:
简å•çš„demo,éšä¾¿å»ºå‡ 个UI,把脚本拖到任æ„物ä½ï¼ŒæŒ‰1ç§éŸå有ååºäº‹ä»¶ã€‚以下脚本å¯é¿å…ScrollView失效,以åŠé‡å UIç©¿é€é€‰æ‹©ã€‚
![éƒå·unity3d培è®,Z†·Ÿ]()
VR1VJ" src="http://uploadfile.qikuedu.com/2019/0319/20190319110022305.jpg" style="width: 480px; height: 270px;" />
方法一:使ç¨EventSystems,适åˆåœºæ™¯ä¸ç®€å•çš„UIæä½œ
using UnityEngine.EventSystems;
public class RyanPressTest : MonoBehaviour {
Vector3 lastMousePose;
EventSystem m_EventSystem;
float curT = 0;
// 是å¦å·²ç»è¢«é€‰æ‹©
bool isPressed = false;
void Start(){
m_EventSystem = FindObjectOfType();
}
void Update () {
if(Input.GetMouseButtonDown(0)){
lastMousePose = Input.mousePosition;
}
if (Input.GetMouseButton(0) && !isPressed && lastMousePose == Input.mousePosition)
{
curT += Time.deltaTime;
// 长按1ç§
if(curT >= 1f){
Debug.Log(m_EventSystem.currentSelectedGameObject + " was pressed.");
isPressed = true;
}
}
if(Input.GetMouseButtonUp(0)){
isPressed = false;
curT = 0;
}
}
}
方法二:使ç¨å°„线,适ç¨äºé¼ æ ‡ä¸€ä¸‹é€‰æ‹©å¤šä¸ªUIçš„å¤æ‚场景
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class RyanPressTest : MonoBehaviour {
Vector3 lastMousePose;
GraphicRaycaster m_Raycaster;
PointerEventData m_PointerEventData;
float curT = 0;
// 是å¦å·²ç»è¢«é€‰æ‹©
bool isPressed = false;
void Start(){
m_Raycaster = FindObjectOfType ();
}
void Update () {
if(Input.GetMouseButtonDown(0)){
lastMousePose = Input.mousePosition;
}
if (Input.GetMouseButton(0) && !isPressed && lastMousePose == Input.mousePosition)
{
curT += Time.deltaTime;
m_PointerEventData = new PointerEventData(null);
m_PointerEventData.position = lastMousePose;
List results = new List();
m_Raycaster.Raycast(m_PointerEventData, results);
// 长按1ç§
if(results.Count > 0 && curT >= 1f){
// 彿œ‰å¤šä¸ªé‡å UI,results会è¿å›æ‰€æœ‰è¢«å°„线穿é€çš„UI数组,一般æˆä»¬åªéœ€è¦æœ€ä¸Šé¢çš„那个UI
Debug.Log(results[0].gameObject + " was pressed.");
isPressed = true;
}
}
if(Input.GetMouseButtonUp(0)){
isPressed = false;
curT = 0;
}
}
}
å…¶å®EventTriggerä¹Ÿèƒ½ç›æµ‹é•¿æŒ‰ï¼Œä½†ç¨äº†å®ƒScrollView就失效了,还是ç¨ä¸Šé¢ä¸¤ç§æ–¹æ³•æ¯è¾ƒé€šã€‚