您好,登錄后才能下訂單哦!
Image組件:動態改變Source Image.
1.gameObject.GetComponent().p_w_picpath.sprite = YourSprite; (YourSPrite的獲取方法有我是在前面定義Spites數組,拉圖片入去的.有更好的方法請告訴我..)
2.gameObject.GetComponent.<Image>().sprite= Resources.Load("img/test/short/short_run_right",typeof(Sprite));
Resources.Load是讀取Resources文件夾里的文件
真心好麻煩,求unity出方便點的方法....
我相信剛開始大家都會遇到這個[color=rgb(85, 85, 85) !important]問題....
任務系統點擊Button按鈕,角色執行了移動命令.解決方法如下
if (EventSystem.current.IsPointerOverGameObject())
Debug.Log("當前觸摸在UI上");
else Debug.Log("當前沒有觸摸在UI上");
安卓手機以上方法無效,詳細方法
http://forum.[color=rgb(85, 85, 85) !important]unity3d.com/threads/ispointerovereventsystemobject-always-returns-false-on-mobile.265372/
我復制了過來:
void Update ()
{
if (Input.touchCount > 0 && Input.GetTouch (0).phase == TouchPhase.Began) {
if (IsPointerOverGameObject (Input.GetTouch (0).fingerId)) {
Debug.Log("Hit UI, Ignore Touch");
} else {
Debug.Log("Handle Touch");
}
}
}
bool IsPointerOverGameObject( int fingerId )
{
EventSystem eventSystem = EventSystem.current;
return ( eventSystem.IsPointerOverGameObject( fingerId )
&& eventSystem.currentSelectedGameObject != null );
}
Event Trigger處理各種點擊拖拽事件
Canvas處理層級
Graphic Raycaster處理事件響應先后,2個canvas組件時候必須要用,否則一個canvas不響應鼠標事件
渲染層級順序:
Camera
softing Layer
softing order
ugui背包系統
射線檢測:物品本身需要添加的組件:Graphic Raycaster , Canvas Group, Canvas ,移動物品的代碼
Graphic Raycaster用來檢測鼠標射線,判斷是否點擊了物品
Canvas Group 在移動物品的代碼中設置其中參數Blocks Raycasts的值.讓event trigger忽略自身,這樣才可以讓event trigger檢測到它下面一層的對象,如包裹或物品格子等
Canvas 你不加這個用不了Canvas Group
public void OnBeginDrag(PointerEventData eventData) eventData即為射線檢測碰到的東西
layermask使只有某層能接收.
在兩個圖之間插一個圖
GameObject button = GameObject.Instantiate(Resources.Load<GameObject>("button"))as GameObject;
button.transform.parent = transform;
button.transform.localPosition = Vector3.zero;
button.transform.localScale = Vector3.one;
GameObject AObj = transform.Find("A").gameObject;
GameObject BObj = transform.Find("B").gameObject;
button.transform.SetSiblingIndex(AObj.transform.GetSiblingIndex());
間接實現雙擊使用物品
前面2個方法是必須使用的,否則第3個方法無法正常使用.OnPointerEnter是在鼠標進入一瞬間執行代碼,這得什么手速啊..設置blocksRaycasts變為false的時候鼠標射線穿透,再變了true即為鼠標射線再次碰到物品,此時再點擊一下物品即可.
public void OnPointerDown(PointerEventData eventData)
{
canvasGroup.blocksRaycasts = false;
}
public void OnPointerUp(PointerEventData eventData)
{
canvasGroup.blocksRaycasts = true;
}
public void OnPointerEnter(PointerEventData eventData){
if (Input.GetMouseButtonDown(1))
{
使用的代碼
}
}
當然,這個方法有點奇怪,我也是偶然發現的..還是自己乖乖寫一個吧.提供下思路,用bool判斷是否點擊第1次,弄一個delay參數作為第1次點擊到第2次點擊的間隔.
滑動框
1.建一個Image命名Mask,在Mask里添加ScrollRect和Mask這2個組件.
2.在Mask里創建一個空的GameObject命名ScrollContent,拉進ScrollRect的Content中.添加控件Vertical Layout Group(垂直分布,自動處理).但ScrollContent并不會自動擴大.在代碼中調用GetComponent<RectTransform>().sizeDelta即可動態改變其寬高.
3.創建一個Prefab通過代碼動態添加進ScrollDetails中.
p_w_picpath中的九宮格sliced邊框在原圖SpriteEditor中設置.
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。