//設置棋子於指定位置 //[input] name=棋子名稱 / pos=位置 / player=玩家陣營(True=正面方/False=反面方) / isKing=是否為王 public void CreateChess(AnimalChessName name, CellBehavior cell, Camps player, bool isKing) { GameObject chessGo = Instantiate(chessPrefab, cell.GetComponent <RectTransform>()); //創建指定的棋子物件 ChessBehavior ChessScript = chessGo.GetComponent <ChessBehavior>(); //取得棋子腳本 ChessScript.ChessInitialize(Dict_ChessAttribute[name], player, isKing); //套用棋子屬性設定 cell.chessScript = ChessScript; //將棋子腳本註冊至所在的棋格上 }
public void CheckReachable() { // mark all heap as unreachable foreach (GameObject go in heap.Values) { CellBehavior cb = go.GetComponent <CellBehavior>(); cb.reachable = false; } foreach (GameObject go in stack.Values) { CellBehavior cb = go.GetComponent <CellBehavior>(); if (cb.tag == "pointer") { PointerController pc = (PointerController)cb; if (pc.Target != null) { MarkReachable(pc.Target); } } } int reached = 1; while (reached > 0) { reached = 0; foreach (GameObject go in heap.Values) { CellBehavior cb = go.GetComponent <CellBehavior>(); if (cb.reachable) { if (cb.tag == "pointer") { PointerController pc = (PointerController)cb; if (pc.Target != null) { reached += MarkReachable(pc.Target); } } } } } foreach (GameObject go in heap.Values) { CellBehavior cb = go.GetComponent <CellBehavior>(); if (!cb.reachable) { cb.GetComponent <SpriteRenderer>().color = new Color(0, 0, 0, 1); } } }