代碼並不高效,僅以實現效果為目的.
被攻擊時調用(需要傳入HP預制件父級對象)
1 //受到傷害時,掉血 2 public void OnHurt(Transform HP) 3 { 4 print("觸碰到了怪物..."); 5 //遍歷父級對象 6 for (int i = HP.childCount - 1; i >= 0; i--) 7 { 8 //創建臨時變量T,假設是最后一個元素 9 int t = HP.childCount - 1; 10 //比對一致時,表示找到了一樣的子級 11 if (i == t) 12 { 13 //說明還有血 14 if (i > 0) 15 { 16 print(i); 17 print("還有血..."); 18 //刪除最后一個對象(小紅心) 19 Destroy(HP.GetChild(t).gameObject); 20 } 21 else 22 { 23 print("沒血了"); 24 //沒血了,重新加載當前場景 25 ReStart(); 26 } 27 } 28 } 29 }
觸碰加血道具對象時調用(需要傳入HP預制件父級對象)
1 //觸碰加血道具時,加血 2 public void AddHp(Transform hp) 3 { 4 if (hp.childCount == 10)//滿血限制 5 { 6 print("滿血了"); 7 return; 8 } 9 10 //臨時變量,存儲HP父級最后一個子級的坐標x 11 for (int i = hp.childCount - 1; i > 0; i--) 12 { 13 //創建臨時變量,用於存儲最后一個元素; 14 var t = hp.childCount - 1; 15 //相等時,表示找到最后一個元素 16 if (i == t) 17 { 18 //獲取最后一個元素的x,Y坐標 19 var posX = hp.GetChild(i).gameObject.transform.position.x; 20 var posY = hp.GetChild(i).gameObject.transform.position.y; 21 //Instantiate(要生成的對象預制件,坐標,旋轉,父級)x軸偏移值,可以自行更改 22 Instantiate(hp_yzj, new Vector3(posX += 39f, posY, 1), Quaternion.identity, hp); 23 } 24 } 25 }
效果