日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用Unity3D实现简单的牧师与魔鬼游戏

發布時間:2024/6/3 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Unity3D实现简单的牧师与魔鬼游戏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用Unity3D實現簡單的牧師與魔鬼游戲

項目地址

牧師與魔鬼游戲

完成效果圖

實現心得

游戲所使用的是MVC模式開發。

遵循的動作表為:

動作條件
開船船上至少有一個角色(牧師或魔鬼)
牧師在左岸上船船上至少有一個空位且在左岸,左岸至少有一個牧師,船在左岸
牧師在左岸下船船上至少有一個牧師且在左岸
惡魔在左岸上船船上至少有一個空位且在左岸,左岸至少有一個魔鬼,船在左岸
惡魔在左岸下船船上至少有一個惡魔且在左岸
牧師在右岸上船船上至少有一個空位且在右岸,右岸至少有一個牧師,船在右岸
牧師在右岸下船船上至少有一個牧師且船在右岸
惡魔在右岸上船船上至少有一個空位且在右岸,右岸至少有一個惡魔,船在右岸
惡魔在右岸下船船上至少有一個惡魔且船在右岸

首先確定游戲界面組成部分:

由游戲界面組成部分可以設計模式開發結構的視圖部分:

可以看到,游戲界面由五個部分組成:船、岸、角色、河流、功能提示框,所以首先可以創建船視圖BoatView、岸視圖ShoreView、角色視圖RoleView、河流視圖RiverView和功能視圖FunctionView五個視圖類,因為移動也需要在界面中展現,所以還可以創建一個移動視圖MoveView,從而很簡單地確定了MVC結構的視圖部分:

using System.Collections; using System.Collections.Generic; using UnityEngine;namespace PriestsAndDevils {/* 船視圖 */public class BoatView {private GameObject boat; // 創建船視圖需要的游戲對象/* 創建船視圖 */public BoatView() {boat = Object.Instantiate(Resources.Load ("Perfabs/Boat", typeof(GameObject)), new Vector3(2.5F, -1, 0), Quaternion.identity, null) as GameObject;boat.name = "Boat";}public GameObject GetGameObj() {return boat;}/* 為游戲對象添加移動控制器 */public MoveController AddMoveScript() {MoveController moveScript = boat.AddComponent(typeof(MoveController)) as MoveController;return moveScript;}/* 為游戲對象添加點擊控制器 */public void AddClickScript() {boat.AddComponent(typeof(ClickController));}}/* 岸視圖 */public class ShoreView {private GameObject shore; // 創建岸視圖需要的游戲對象/* 根據岸的邊側創建游戲對象和視圖 */public ShoreView(int side, string sideName) {shore = Object.Instantiate(Resources.Load("Perfabs/Shore", typeof(GameObject)), new Vector3(7 * side, -1, 0), Quaternion.identity, null) as GameObject;shore.name = sideName;}}/* 角色視圖 */public class RoleView {private GameObject role; // 創建角色視圖需要的游戲對象/* 根據角色類型和序號創建游戲對象和視圖 */public RoleView(string roleName, int number) {role = Object.Instantiate(Resources.Load ("Perfabs/" + roleName, typeof(GameObject)), Vector3.zero, Quaternion.identity, null) as GameObject;role.name = roleName + number;}/* 為游戲對象添加移動控制器 */public MoveController AddMoveScript() {MoveController moveScript = role.AddComponent(typeof(MoveController)) as MoveController;return moveScript;}/* 為游戲對象添加點擊控制器 */public ClickController AddClickScript() {return role.AddComponent(typeof(ClickController)) as ClickController;}/* 獲取對象名字 */public string GetName() {return role.name;}/* 設置角色父對象 */public void SetRoleParentTrans(Transform trans) {role.transform.parent = trans;}/* 設置角色位置 */public void SetPos(Vector3 pos) {role.transform.position = pos;}}/* 移動視圖 */public class MoveView : MonoBehaviour {/* 在界面上根據移動位置和速度呈現物體移動效果 */public void MoveTo(Vector3 pos, int speed) {transform.position = Vector3.MoveTowards(transform.position, pos, speed * Time.deltaTime);}}/* 河流視圖 */public class RiverView {private GameObject river; // 創建河流視圖需要的游戲對象/* 創建河流視圖 */public RiverView() {river = Object.Instantiate(Resources.Load ("Perfabs/River", typeof(GameObject)), new Vector3(0, -1.5F, 0), Quaternion.identity, null) as GameObject;river.name = "River";}}/* 功能視圖 */public class FunctionView : MonoBehaviour {private string tipContent; // 提示框顯示內容public FunctionView() {tipContent = "Click and Play the Game";}public void SetTipContent(string tip) {tipContent = tip;}/* 初始化提示框 */public void InitFunctionView() {tipContent = "Click and Play the Game";}public void ShowResetButton() {GUIStyle resetStyle = new GUIStyle("button");resetStyle.fontSize = 20;// 按下重置按鈕,游戲被初始化if (GUI.Button(new Rect(30, 20, 70, 30), "Reset", resetStyle)) {SingleObject.getInstance().GetMainController().InitGame();}}public void ShowTip(string tipContent) {GUIStyle tipStyle = new GUIStyle();tipStyle.fontSize = 20;GUI.Label(new Rect(Screen.width - 140, 20, 100, 50), "Priest: Yellow\nDevil: Red", tipStyle);tipStyle.fontSize = 30;tipStyle.alignment = TextAnchor.MiddleCenter;// 展示提示內容GUI.Label(new Rect(Screen.width / 2 - 50, 70, 100, 50), tipContent, tipStyle);}void OnGUI() {ShowTip(tipContent); // 展現提示框ShowResetButton(); // 展現重置按鈕}} }

由視圖部分可以接著設計模型部分和控制器部分:

對于模型部分,因為河流基本沒有相關邏輯,功能提示框的邏輯與整個游戲有關,所以首先想到,只為船Boat、岸Shore、角色Role創建三個模型,另外兩個部分可以直接創建視圖,移動視圖也可以創建一個模型,從而使具體的游戲對象可以掛載一個移動控制部分進行移動,所以MVC的模型部分,一共可以創建BoatModel、ShoreModel、RoleModel、MoveModel四個模型類:

using System.Collections; using System.Collections.Generic; using UnityEngine;namespace PriestsAndDevils {/* 船模型 */public class BoatModel {private int side; // 岸邊方向,-1表示船在左岸即終點岸,1表示船在右岸即出發岸private string [] roleOnBoat = new string [2]{"", ""}; // 船上的角色,要不為牧師或魔鬼,要不為空public BoatModel(int side) {this.side = side;}public void SetSide(int side) {this.side = side;}public int GetSide() {return side;}public void SetRoleOnBoat(string [] roles) {roleOnBoat = roles;}public string [] GetRoleOnBoat() {return roleOnBoat;}}/* 岸模型 */public class ShoreModel {private int side; // 岸邊方向,-1表示左岸即終點岸,1表示右岸即出發岸private string [] roleOnShore = new string [6]{"", "", "", "", "", ""}; // 岸上的角色,要不為牧師或魔鬼,要不為空public ShoreModel(int side) {this.side = side;}public void SetSide(int side) {this.side = side;}public int GetSide() {return side;}public void SetRoleOnShore(string [] roles) {roleOnShore = roles;}public string [] GetRoleOnShore() {return roleOnShore;}}/* 角色模型 */public class RoleModel {private bool isOnBoat; // 角色是否在船上public void SetIsOnBoat(bool isOnBoat) {this.isOnBoat = isOnBoat;}public bool GetIsOnBoat() {return isOnBoat;}}/* 移動模型 */public class MoveModel {private static int speed = 25; // 移動速度private Vector3 middlePos; // 移動的中間位置,因為角色以折線形式運動,所以會有一個先移動到的中間位置private Vector3 endPos; // 移動的最后位置,角色或船最后移動到的位置private int state; // 移動狀態,0表示沒有移動,1表示正在移動到中間位置,2表示正在從中間位置移動到最后位置public int GetSpeed() {return speed;}public void SetMiddlePos(Vector3 pos) {middlePos = pos;}public Vector3 GetMiddlePos() {return middlePos;}public void SetEndPos(Vector3 pos) {endPos = pos;}public Vector3 GetEndPos() {return endPos;}public void SetState(int state) {this.state = state;}public int GetState() {return state;}} }

對應的控制類也要創建,所以首先創建BoatController、ShoreController、RoleController、MoveController這四個控制類,和模型部分以及視圖部分相對應,由于游戲對象需要點擊才能移動,所以也創建一個ClickController類,處理點擊事件,整個游戲可以創建一個主控制類MainController,其中包含所有具體的游戲角色對應的控制器,比如船控制器、左岸控制器、右岸控制器、以及所有角色的6個控制器,最后創建一個單例對象類SingleObject,里面有唯一一個主控制類,用來使其它類能獲取主控制類的唯一實例從而向主控制類傳遞信息,完成相應邏輯:

using System.Collections; using System.Collections.Generic; using UnityEngine;namespace PriestsAndDevils {/* 河岸岸邊,左岸終點岸為-1,右岸出發岸為1 */enum ShoreSide {Left = -1, Right = 1};/* 移動狀態,0表示沒有移動,1表示正在移動到中間位置,2表示正在從中間位置移動到最后位置 */enum MoveState {Not_Moving = 0, Moving_To_Middle = 1, Moving_To_End = 2};/* 游戲狀態,0為正在進行,1為游戲失敗,2為游戲成功 */enum GameState {Playing = 0, Lose = 1, Win = 2};/* 移動控制器,一般會掛載到某個具體的游戲對象上 */public class MoveController : MonoBehaviour {private MoveModel moveModel;private MoveView moveView;void Start() {moveModel = new MoveModel();moveView = gameObject.AddComponent<MoveView>() as MoveView;}void Update() {int state = moveModel.GetState();Vector3 middlePos = moveModel.GetMiddlePos();Vector3 endPos = moveModel.GetEndPos();int speed = moveModel.GetSpeed();// 根據速度、中間位置、終點位置、移動狀態來移動物體Move(state, middlePos, endPos, speed);}/* 初始化控制器,設置物體不移動 */public void InitMoveController() {moveModel.SetState((int)MoveState.Not_Moving);}/* 根據速度、中間位置、終點位置、移動狀態來移動物體 */public void Move(int state, Vector3 middlePos, Vector3 endPos, int speed) {switch (state) {case (int)MoveState.Not_Moving:break;case (int)MoveState.Moving_To_Middle:// 移動物體到中間位置,移動到后,設置物體的下一個狀態為移動到終點moveView.MoveTo(middlePos, speed);if (transform.position == middlePos) {moveModel.SetState((int)MoveState.Moving_To_End);}break;case (int)MoveState.Moving_To_End:// 移動物體到終點位置,移動到后,設置物體的下一個狀態為不移動moveView.MoveTo(endPos, speed);if (transform.position == endPos) {moveModel.SetState((int)MoveState.Not_Moving);}break;}}/* 設置物體要移動到的位置 */public void SetMovePos(Vector3 pos) {// 設置物體開始往中間位置移動moveModel.SetState((int)MoveState.Moving_To_Middle);// 設置最終移動位置為posmoveModel.SetEndPos(pos);// 如果要移動到的位置的y坐標等于物體所在位置的y坐標,說明是船在移動if (pos.y == transform.position.y) {// 船沿直線運動,所以中間位置也可設為最終位置moveModel.SetMiddlePos(pos);// 移動狀態可以直接設為往終點移動moveModel.SetState((int)MoveState.Moving_To_End);}// 如果要移動到的位置的y坐標小于物體所在位置的y坐標,說明是物體從岸上移動到船上else if (pos.y < transform.position.y) {moveModel.SetMiddlePos(new Vector3(pos.x, transform.position.y, pos.z));}// 如果要移動到的位置的y坐標小于物體所在位置的y坐標,說明是物體從船上移動到岸上else {moveModel.SetMiddlePos(new Vector3(transform.position.x, pos.y, pos.z));}}}/* 點擊控制器,一般會掛載在某個游戲對象上 */public class ClickController : MonoBehaviour {private RoleController clickRole; // 如果點擊的是角色,那么記錄點擊的對象的控制器public void SetClickRole(RoleController role) {clickRole = role;}void OnMouseDown() {// 如果鼠標點擊的對象是船,那么移動船只if (gameObject.name == "Boat") {SingleObject.getInstance().GetMainController().MoveBoat();} else {// 如果鼠標點擊的對象是角色,那么移動對象SingleObject.getInstance().GetMainController().MoveRole(clickRole);}}}public class BoatController {// 船在左岸時裝載角色的位置private static Vector3 [] leftLoadPos = new Vector3 [] {new Vector3(-3, -0.5F, 0), new Vector3(-2, -0.5F, 0)};// 船在右岸時裝載角色的位置private static Vector3 [] rightLoadPos = new Vector3 [] {new Vector3(2, -0.5F, 0), new Vector3(3, -0.5F, 0)};private BoatModel boatModel; // 船模型private BoatView boatView; // 船視圖private MoveController moveController; // 移動控制器public BoatController() {// 船開始在右岸boatModel = new BoatModel((int)ShoreSide.Right);boatView = new BoatView();// 添加移動控制器moveController = boatView.AddMoveScript();// 添加點擊控制器boatView.AddClickScript();}/* 初始化船控制器 */public void InitBoatController() {// 先初始化移動控制器moveController.InitMoveController();// 獲取船在哪邊int side = boatModel.GetSide();// 在左邊的話,船會回到右邊去if (side == (int)ShoreSide.Left) {MoveToOtherSide();}// 初始化船模型沒有乘客boatModel.SetRoleOnBoat(new string [2]{"", ""});}// 獲取船所在的岸邊public int GetBoatSide() {return boatModel.GetSide();}// 獲取船的游戲對象public GameObject GetBoat() {return boatView.GetGameObj();}/* 將船移動到岸的另一側 */public void MoveToOtherSide() {// 先獲取船在哪邊int side = boatModel.GetSide();// 移動船到另一邊if (side == (int)ShoreSide.Left) {moveController.SetMovePos(new Vector3(2.5F, -1, 0));boatModel.SetSide((int)ShoreSide.Right);} else {moveController.SetMovePos(new Vector3(-2.5F, -1, 0));boatModel.SetSide((int)ShoreSide.Left);}}/* 獲取船上空閑的位置 */public int GetFreeIndex() {string [] roleOnBoat = boatModel.GetRoleOnBoat();// 按照順序獲取船上空閑的位置if (roleOnBoat[0] == "") {return 0;} else if (roleOnBoat[1] == "") {return 1;} else {// 如果沒有空閑位置返回-1return -1;}}/* 判斷船上是否沒有角色 */public bool IsNoRole() {string [] roleOnBoat = boatModel.GetRoleOnBoat();if (roleOnBoat[0] != "" || roleOnBoat[1] != "") {return false;} else {return true;}}/* 根據船靠岸的方向獲取對應方向里船上空閑位置 */public Vector3 GetFreePosition() {string [] roleOnBoat = boatModel.GetRoleOnBoat();int freeIndex = GetFreeIndex();// 如果沒有空閑位置,直接返回if (freeIndex < 0) {return new Vector3(-1, -1, -1);}int side = boatModel.GetSide();if (side == (int)ShoreSide.Left) {return leftLoadPos[freeIndex];} else {return rightLoadPos[freeIndex];}}/* 將角色放到船上 */public void PutRoleOnBoat(string roleName) {// 獲取船上空閑位置int freeIndex = GetFreeIndex();// 如果沒有空閑位置,直接返回if (freeIndex < 0) {return;}// 利用角色名字將角色放入船string [] roleOnBoat = boatModel.GetRoleOnBoat();roleOnBoat[freeIndex] = roleName;}/* 將角色離開船上 */public void PutRoleOffBoat(string roleName) {string [] roleOnBoat = boatModel.GetRoleOnBoat();// 如果船的相應位置有角色名字,將其置為空for (int i = 0; i < roleOnBoat.Length; i++) {if (roleOnBoat[i] == roleName) {roleOnBoat [i] = "";break;}}}/* 獲取船上的各個角色的數目 */public int[] GetRoleCountOnBoat() {int [] count = {0, 0};string [] roleOnBoat = boatModel.GetRoleOnBoat();for (int i = 0; i < roleOnBoat.Length; i++) {string roleName = roleOnBoat[i];if (roleName == "") continue;if (roleName.Remove(roleName.Length - 1, 1) == "Priest") {count[0]++;} else {count[1]++;}}return count;}}/* 岸控制器 */public class ShoreController {private ShoreModel shoreModel; // 岸模型private ShoreView shoreView; // 岸視圖// 右岸上可以放角色的位置,左岸的位置只需將坐標的x數值乘-1即可private static Vector3 [] positions = new Vector3[] {new Vector3(4.5F, 0.25F, 0), new Vector3(5.5F, 0.25F, 0), new Vector3(6.5F, 0.25F, 0), new Vector3(7.5F, 0.25F, 0), new Vector3(8.5F, 0.25F, 0), new Vector3(9.5F, 0.25F, 0)};public ShoreController(int side, string sideName) {shoreModel = new ShoreModel(side);shoreView = new ShoreView(side, sideName);}public void InitShoreController() {shoreModel.SetRoleOnShore(new string [6]{"", "", "", "", "", ""});}/* 獲取岸邊 */public int GetShoreSide() {return shoreModel.GetSide();}/* 獲取岸上空閑的位置 */public int GetFreeIndex() {string [] roleOnShore = shoreModel.GetRoleOnShore();for (int i = 0; i < roleOnShore.Length; i++) {if (roleOnShore[i] == "") {return i;}}// 如果沒有空閑位置返回-1return -1;}/* 根據船靠岸的方向獲取對應方向里岸上空閑位置 */public Vector3 GetFreePosition() {int freeIndex = GetFreeIndex();// 如果沒有空閑位置,直接返回if (freeIndex < 0) {return new Vector3(-1, -1, -1);}Vector3 pos = positions[freeIndex];// 坐標的x數值乘1是右邊岸上的位置,乘-1即可得到左邊岸上的位置pos.x *= shoreModel.GetSide();return pos;}/* 將角色放到岸上 */public void PutRoleOnShore(string roleName) {// 獲取岸上空閑位置int freeIndex = GetFreeIndex();// 如果沒有空閑位置,直接返回if (freeIndex < 0) {return;}// 利用角色名字將角色放上岸string [] roleOnShore = shoreModel.GetRoleOnShore();roleOnShore[freeIndex] = roleName;}/* 將角色離開岸上 */public void PutRoleOffShore(string roleName) {string [] roleOnShore = shoreModel.GetRoleOnShore();// 如果岸的相應位置有角色名字,將其置為空for (int i = 0; i < roleOnShore.Length; i++) {if (roleOnShore[i] == roleName) {roleOnShore [i] = "";break;}}}/* 獲取岸上的各個角色的數目 */public int [] GetRoleCountOnShore() {int [] count = {0, 0};string [] roleOnShore = shoreModel.GetRoleOnShore();for (int i = 0; i < roleOnShore.Length; i++) {string roleName = roleOnShore[i];if (roleName == "") continue;if (roleName.Remove(roleName.Length - 1, 1) == "Priest") {count[0]++;} else {count[1]++;}}return count;}}/* 角色控制器 */public class RoleController {private RoleModel roleModel; // 角色模型private RoleView roleView; // 角色視圖private MoveController moveController; // 移動控制器private ClickController clickController; // 點擊控制器private ShoreController shoreController; // 角色所在相應岸上的岸控制器public RoleController(string roleName, int number) {roleModel = new RoleModel();roleView = new RoleView(roleName, number);// 添加移動控制器moveController = roleView.AddMoveScript();// 添加點擊控制器,并記錄點擊對象的控制器clickController = roleView.AddClickScript();clickController.SetClickRole(this);}public void InitRoleController() {// 初始化移動控制器moveController.InitMoveController();// 獲取主控制器中的右岸控制器shoreController = (SingleObject.getInstance().GetMainController() as MainController).GetRightShore();// 將角色放到右岸上PutRoleOnShore(shoreController);SetRolePos(shoreController.GetFreePosition());// 右岸控制器中關于角色的信息也被初始化shoreController.PutRoleOnShore(this.GetRoleViewName());}public ShoreController GetShoreController() {return shoreController;}/* 設置角色游戲對象位置 */public void SetRolePos(Vector3 pos) {roleView.SetPos(pos);}/* 將角色移動到指定位置 */public void MoveToPosition(Vector3 endPosination) {moveController.SetMovePos(endPosination);}/* 獲取角色游戲對象名字 */public string GetRoleViewName() {return roleView.GetName();}/* 獲取游戲對象是否在船上 */public bool IsOnBoat() {return roleModel.GetIsOnBoat();}/* 將角色放到船上 */public void PutRoleOnBoat(BoatController boatController) {// 設置角色不在岸上,所以也沒有岸控制器shoreController = null;// 設置角色在船上roleModel.SetIsOnBoat(true);// 設置角色游戲對象的父對象是船只roleView.SetRoleParentTrans(boatController.GetBoat().transform);}/* 將角色放到岸上 */public void PutRoleOnShore(ShoreController shoreController) {// 設置角色在相應岸上的岸控制器this.shoreController = shoreController;// 設置角色不在船上roleModel.SetIsOnBoat(false);// 設置角色游戲對象的父對象為沒有roleView.SetRoleParentTrans(null);}}/* 主控制器 */public class MainController : MonoBehaviour {private BoatController boat; // 船控制器private ShoreController leftShore; // 左岸控制器private ShoreController rightShore; // 右岸控制器private RoleController [] roles; // 所有角色的控制器private RiverView riverView; // 河流視圖private FunctionView functionView; // 功能視圖,包括提示框,游戲信息等private int gameState = (int)GameState.Playing; // 游戲狀態,0表示游戲正在進行,1表示游戲失敗,2表示游戲成功void Awake() {// 設置單例對象中只有唯一一個主控制器SingleObject instance = SingleObject.getInstance();instance.SetMainController(this);// 展現游戲視圖ShowView();}/* 通過創建控制器的方式初始化游戲視圖 */public void ShowView() {boat = new BoatController();leftShore = new ShoreController((int)ShoreSide.Left, "LeftShore");rightShore = new ShoreController((int)ShoreSide.Right, "RightShore");roles = new RoleController[6];CreateRolesController();riverView = new RiverView();functionView = gameObject.AddComponent<FunctionView>() as FunctionView;}/* 為每個角色創建控制器并初始化視圖 */private void CreateRolesController() {for (int i = 0; i < 3; i++) {roles[i] = new RoleController("Priest", i + 1);roles[i].SetRolePos(rightShore.GetFreePosition());roles[i].PutRoleOnShore(rightShore);rightShore.PutRoleOnShore(roles[i].GetRoleViewName());}for (int i = 0; i < 3; i++) {roles[i + 3] = new RoleController("Devil", i + 1);roles[i + 3].SetRolePos(rightShore.GetFreePosition());roles[i + 3].PutRoleOnShore(rightShore);rightShore.PutRoleOnShore(roles[i + 3].GetRoleViewName());}}/* 通過初始化控制器和視圖的方式初始化游戲 */public void InitGame() {boat.InitBoatController();leftShore.InitShoreController();rightShore.InitShoreController();for (int i = 0; i < roles.Length; i++) {roles[i].InitRoleController();}functionView.InitFunctionView();gameState = (int)GameState.Playing;}public ShoreController GetRightShore() {return rightShore;}/* 根據不同的游戲狀態返回不同的提示框內容 */public string StateToTip(int gameState) {switch (gameState) {case (int)GameState.Playing:return "Click and Play the Game";case (int)GameState.Lose:return "You lose! Click \"Reset\" to play again!";case (int)GameState.Win:return "You win! Click \"Reset\" to play again!";default:return "";}}/* 通過船控制器來移動船只 */public void MoveBoat() {// 如果游戲狀態不是正在進行,那么不移動if (gameState != (int)GameState.Playing) {return;}// 如果船上沒有角色,不能開船if (boat.IsNoRole()) {return;} else {// 否則直接將船開到另一邊boat.MoveToOtherSide();}// 檢查游戲狀態gameState = CheckGameState();// 顯示相應提示functionView.SetTipContent(StateToTip(gameState));}/* 通過角色控制器移動角色 */public void MoveRole(RoleController role) {// 如果游戲狀態不是正在進行,那么不移動if (gameState != (int)GameState.Playing) {return;}// 如果角色在船上,那么要將角色放上相應岸邊if (role.IsOnBoat()) {// 獲取船所在的岸邊ShoreController boatShore;if (boat.GetBoatSide() == (int)ShoreSide.Left) {boatShore = leftShore;} else {boatShore = rightShore;}/* 設置船和岸以及角色控制器以將角色放到岸上 */role.MoveToPosition(boatShore.GetFreePosition());boat.PutRoleOffBoat(role.GetRoleViewName());role.PutRoleOnShore(boatShore);boatShore.PutRoleOnShore(role.GetRoleViewName());} else {// 否則角色在岸上,要將角色放到船上,首先獲取角色所在岸邊的控制器ShoreController boatShore = role.GetShoreController();// 如果船上沒有位置,或者船和物體所在的岸不是一邊,直接返回if (boat.GetFreeIndex() == -1 || boatShore.GetShoreSide() != boat.GetBoatSide()) {return;}/* 設置船和岸以及角色控制器以將角色放到船上 */role.MoveToPosition(boat.GetFreePosition());boat.PutRoleOnBoat(role.GetRoleViewName());role.PutRoleOnBoat(boat);boatShore.PutRoleOffShore(role.GetRoleViewName());}// 檢查游戲狀態gameState = CheckGameState();// 顯示相應提示functionView.SetTipContent(StateToTip(gameState));}/* 檢查游戲狀態 */public int CheckGameState() {// 初始化左邊和右邊的牧師和魔鬼數量都為0int leftPriest = 0, rightPriest = 0;int leftDevil = 0, rightDevil = 0;// 獲取左岸和右岸以及船上的牧師和魔鬼的數量數組int [] leftShoreCount = leftShore.GetRoleCountOnShore();int [] rightShoreCount = rightShore.GetRoleCountOnShore();int [] boatCount = boat.GetRoleCountOnBoat();// 如果船在左邊,那么左邊的牧師和魔鬼的數量為左岸數量加上船里的數量if (boat.GetBoatSide() == (int)ShoreSide.Left) {leftPriest = leftShoreCount[0] + boatCount[0];leftDevil = leftShoreCount[1] + boatCount[1];rightPriest = rightShoreCount[0];rightDevil = rightShoreCount[1]; } else {// 如果船在右邊,那么右邊的牧師和魔鬼的數量為右岸數量加上船里的數量leftPriest = leftShoreCount[0];leftDevil = leftShoreCount[1];rightPriest = rightShoreCount[0] + boatCount[0];rightDevil = rightShoreCount[1] + boatCount[1]; }// 如果左邊牧師加魔鬼的數量等于6且魔鬼全部上岸,那么游戲成功if (leftPriest + leftDevil == 6 && leftShoreCount[1] == 3) {return (int)GameState.Win;} else if (leftPriest < leftDevil && leftPriest > 0) {// 如果任意一邊牧師的數量小于魔鬼的數量且有牧師,那么游戲失敗return (int)GameState.Lose;} else if (rightPriest < rightDevil && rightPriest > 0) {return (int)GameState.Lose;} else {// 否則游戲正在進行中return (int)GameState.Playing;}}}/* 單例對象,里面有唯一一個主控制類 */public class SingleObject {private static SingleObject instance = new SingleObject();private MainController mainController;public static SingleObject getInstance() {return instance;}public void SetMainController(MainController controller) {mainController = controller;}public MainController GetMainController() {return mainController;}} }

最后在主文件中,調用主控制器,進行游戲,就實現了一個基本的MVC模式:

using System.Collections; using System.Collections.Generic; using UnityEngine;namespace PriestsAndDevils {public class Main : MonoBehaviour {void Start() {// 創建主控制器MainController mainController = gameObject.AddComponent<MainController>() as MainController;}} }

總結: 所以在實現MVC模式時,可以先將最后的效果圖畫出來,創建相應的視圖類,由視圖類進行分析,設計相應的模型類和控制器類,基本沒有邏輯的可以不創建模型,直接在主控制類中實現相應視圖或邏輯控制,最后實現MVC模式的開發。

游戲截圖:

正在進行游戲:

游戲失敗:

游戲成功:

總結

以上是生活随笔為你收集整理的用Unity3D实现简单的牧师与魔鬼游戏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

久久综合狠狠 | www.色五月.com | 欧美中文字幕第一页 | 天天操天天操天天操天天操天天操 | 国产美女黄网站免费 | 久久久国产精品一区二区三区 | 四虎小视频| 日韩视频一区二区在线观看 | 最近免费观看的电影完整版 | 国产电影黄色av | 麻花豆传媒mv在线观看 | 天天色成人网 | 91av在线播放视频 | 麻豆视频91 | 国产成人精品免高潮在线观看 | 久久精品中文视频 | 天天操天操| 精品视频久久久 | 久久视频免费在线 | 久久激情视频 久久 | av成人免费在线观看 | 国产青春久久久国产毛片 | 涩涩网站在线观看 | 亚洲精品美女久久17c | 国产精品美女 | 亚洲精品国产综合99久久夜夜嗨 | 99激情网| 婷婷资源站 | 色婷婷av一区二 | 精品无人国产偷自产在线 | 免费看黄色小说的网站 | 西西444www大胆高清图片 | 国产精品久久久久久久久免费 | 免费视频99 | 在线观看黄网站 | 国产精品一区二区精品视频免费看 | 日韩欧美在线综合网 | 午夜三级福利 | 国产视频精选 | 日本三级香港三级人妇99 | 欧洲在线免费视频 | 日韩精品中文字幕在线观看 | 成人国产精品入口 | 国产精品一区二区av日韩在线 | 欧美成人xxxx | 免费观看全黄做爰大片国产 | 日韩一级片网址 | 婷婷综合导航 | 91av视频网站| 91精品久久久久久综合乱菊 | 在线观看免费福利 | 国产69精品久久99不卡的观看体验 | 日韩精品电影在线播放 | www.一区二区三区 | 欧美与欧洲交xxxx免费观看 | 久久国产乱 | 91精品一区二区三区久久久久久 | 黄色字幕网 | 9在线观看免费 | 国产美女精彩久久 | 一区免费视频 | 久久国产精品99久久久久久丝袜 | 亚洲精品99久久久久中文字幕 | 国产黄色播放 | 韩国三级在线一区 | 免费福利片2019潦草影视午夜 | 日韩精品免费一区 | 亚洲h色精品| 四虎国产精品免费 | 性色xxxxhd| 日本久久电影网 | 97超视频在线观看 | 天天鲁天天干天天射 | www.久久91 | av九九| 久久久久久久免费观看 | 91夫妻自拍 | 婷婷国产一区二区三区 | 婷婷香蕉 | 色九九影院 | 欧美日韩免费一区 | 中文字幕免费高清av | 麻豆你懂的 | 在线观看蜜桃视频 | 国产视频在线观看一区二区 | 亚洲蜜桃av | 日韩一区二区三区不卡 | 超碰在线观看97 | 日本中文字幕网站 | 色婷婷97 | 国产91影视 | 在线日本看片免费人成视久网 | 中文字幕久久精品亚洲乱码 | 中文字幕在线久一本久 | 99精品视频中文字幕 | 国产亚洲精品久久久久久久久久久久 | 免费看一级特黄a大片 | 久久精品中文字幕少妇 | 麻豆影视在线免费观看 | 久草在线费播放视频 | 国产精品av免费观看 | 97超碰资源| 久久久久日本精品一区二区三区 | 久久精品在线视频 | 国产精品99久久久久久久久久久久 | 久久国产片| 久久精品麻豆 | 久久久久久精 | 激情www| 1024久久| 麻豆视屏 | 色综合咪咪久久网 | 免费亚洲一区二区 | 亚洲 欧美 另类人妖 | 色99之美女主播在线视频 | 粉嫩一二三区 | 日本成人中文字幕在线观看 | 在线观看亚洲精品 | 九九爱免费视频 | 日日夜夜综合网 | 日韩精品中文字幕在线播放 | 精品国产乱码久久久久 | 中文字幕观看在线 | 中文字幕亚洲欧美日韩2019 | 国产午夜在线 | 国产成人av片 | 91视频免费 | 亚洲一区黄色 | 日韩欧美视频免费在线观看 | 很黄很污的视频网站 | 99夜色| 在线观看视频中文字幕 | 久久成人高清 | 免费黄色网止 | 久久久电影 | 欧美一级视频免费 | 美女视频永久黄网站免费观看国产 | 毛片美女网站 | 521色香蕉网站在线观看 | 久久久高清免费视频 | 欧美三级高清 | 黄色片视频免费 | 亚洲视频在线播放 | 欧美,日韩| 成人毛片在线观看 | 久久a热6| 伊人五月婷| 亚洲最新视频在线播放 | 色欲综合视频天天天 | 国产美女精品视频 | 热99在线视频 | 天天干,天天操 | 日韩免费在线视频观看 | 最近最新mv字幕免费观看 | 国产日韩三级 | 日韩手机视频 | 波多野结衣视频一区 | 三上悠亚一区二区在线观看 | 久久精品视频2 | 在线观看 亚洲 | 五月婷婷电影网 | 久久久黄色免费网站 | 性色视频在线 | 日韩免费大片 | 狠狠色丁香婷婷综合最新地址 | 久草www | 夜夜操天天摸 | 国产精品色在线 | 国产精品福利无圣光在线一区 | 黄色av免费在线 | 色视频成人在线观看免 | 毛片网站免费在线观看 | 伊人伊成久久人综合网站 | 中文字幕不卡在线88 | 综合中文字幕 | 久久免费视频6 | 日韩av免费在线电影 | 婷婷久草 | av黄免费看 | 97超碰资源总站 | 成人av高清在线观看 | 日韩91在线 | 天堂av网址| 91久久精品一区二区三区 | 国产69精品久久99不卡的观看体验 | 国产精品入口久久 | 久草精品视频在线看网站免费 | 一区二区三区中文字幕在线 | 婷婷精品进入 | 日韩一级黄色大片 | 精品国产视频在线观看 | 久久精品视频免费播放 | 国产精品第一视频 | 日韩午夜剧场 | 天天天综合网 | 久久精品在线视频 | 黄色国产在线观看 | 香蕉网在线播放 | 日日夜夜天天干 | 日韩欧美电影在线观看 | 国产理伦在线 | 国产丝袜美腿在线 | 日韩欧美一区二区三区在线观看 | 国产精品久久网站 | 日韩欧美在线综合网 | 日本中文不卡 | 国产精品99视频 | 欧美大片aaa | 国产精品免费一区二区三区 | 在线免费视 | 99精品免费久久久久久久久日本 | 日日日视频 | 日韩精品免费在线视频 | 亚洲更新最快 | 菠萝菠萝蜜在线播放 | 一级黄色片在线免费看 | www.av在线播放| 日本mv大片欧洲mv大片 | 成片免费 | 在线国产精品视频 | 最近中文字幕在线播放 | 国产黄在线 | 一区二区三区影院 | 国内精品毛片 | 亚洲高清av | 国产精品专区在线观看 | 欧美国产不卡 | 亚洲国产无 | 日本三级国产 | 欧美日韩免费一区二区三区 | 亚洲久草视频 | 99免费在线观看 | 7777xxxx| 午夜视频在线网站 | 亚洲精品美女久久久 | 97人人网 | 久久国产欧美日韩 | 国产裸体永久免费视频网站 | 久久网站最新地址 | 日韩激情视频在线观看 | 91网免费观看 | 插婷婷 | 免费av影视| 久99久精品视频免费观看 | 少妇bbbb| 在线观看黄色免费视频 | 国产色就色 | 欧美va电影| 日韩久久精品一区二区三区 | 日韩国产精品久久 | 99se视频在线观看 | 美女网站视频免费都是黄 | 欧美亚洲久久 | 久久综合综合久久综合 | 右手影院亚洲欧美 | 国产成人免费精品 | 人人爽久久久噜噜噜电影 | 一区二区三区精品久久久 | 亚洲精品视频在线观看免费视频 | 国产亚洲字幕 | 国产三级精品三级在线观看 | 夜夜视频资源 | 黄色电影小说 | 免费看污的网站 | 黄色91免费观看 | 又黄又爽又湿又无遮挡的在线视频 | 精品久久久影院 | 波多野结衣日韩 | 一区二区中文字幕在线观看 | 中文字幕在线观看第三页 | 日本久久精品 | 午夜久久电影网 | 国语麻豆| 成人影片免费 | 不卡的av在线播放 | 久久久久久高潮国产精品视 | 亚洲国产美女精品久久久久∴ | 99视频一区二区 | 天天干,狠狠干 | 99久久日韩精品免费热麻豆美女 | 久久手机免费观看 | 国产丝袜高跟 | 337p欧美 | 在线观影网站 | 国产91全国探花系列在线播放 | 91精品在线播放 | 久久久久99999 | 亚洲免费专区 | 亚洲视频免费在线看 | 国产夫妻av在线 | 精品在线看 | 久久黄色成人 | 一级a毛片高清视频 | 在线免费观看国产 | 日本中文一级片 | 亚洲免费精品视频 | 久久综合视频网 | 91精品免费在线 | 在线视频免费观看 | 九九激情视频 | 亚洲欧美日韩精品久久久 | 亚洲精品午夜国产va久久成人 | 五月开心激情 | 丁香av在线| 成人av片免费看 | 国产精品久久久久久久妇 | 久久激情精品 | 国产91丝袜在线播放动漫 | 国产亚洲精品久久 | www.xxxx欧美| 欧美一二三视频 | 天天操 夜夜操 | 少妇性bbb搡bbb爽爽爽欧美 | 久久精品国产亚洲精品2020 | 亚洲春色综合另类校园电影 | 成人精品视频久久久久 | 日韩综合在线观看 | 午夜久久久精品 | 中文字幕日韩一区二区三区不卡 | 女人18片毛片90分钟 | 亚洲一区日韩 | 视频国产 | 国产一区二区久久久 | 一区二区三区在线免费观看 | 在线免费91| 色婷婷视频在线观看 | 久久久国产网站 | 欧美日韩免费在线观看视频 | 色婷婷激婷婷情综天天 | 国内精品久久久久久中文字幕 | 日韩免费福利 | 豆豆色资源网xfplay | 成年人网站免费观看 | 色婷婷成人网 | av先锋中文字幕 | 久久精品99精品国产香蕉 | 综合国产在线 | 国产精品成人一区二区 | 最近中文字幕高清字幕免费mv | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 韩日成人av | 91麻豆精品91久久久久同性 | 在线视频a| 中文在线√天堂 | 欧美精品免费在线观看 | 国产视频一区精品 | 日本精品视频网站 | 国产99区| 国产免费观看av | 视频三区 | a√资源在线| 在线观看亚洲精品 | 久一在线 | 国产精品久久久久毛片大屁完整版 | 1024手机基地在线观看 | 日韩美女免费线视频 | 国产精品一区在线观看你懂的 | 久久九九免费视频 | 亚洲精区二区三区四区麻豆 | av黄色影院 | 六月色婷婷 | 91人网站 | 黄色小说在线观看视频 | 中文字幕黄色网址 | 麻豆91视频 | 三级黄色免费片 | 精品五月天 | 中文字幕在线人 | bbb搡bbb爽爽爽 | 欧美精品v国产精品v日韩精品 | 国产精品久久99综合免费观看尤物 | 国产第一页精品 | 国产精品资源在线观看 | 在线视频 亚洲 | 国产美女网 | 天天操网址 | 色视频国产直接看 | 亚洲一级国产 | 国产色网站 | 亚洲日b视频 | 中文字幕色综合网 | 日韩专区一区二区 | 日韩精品视| 国产福利在线免费观看 | 97在线公开视频 | 国产精品免费视频一区二区 | 日日噜噜噜噜夜夜爽亚洲精品 | 在线看污网站 | 91九色精品女同系列 | 日韩在线观看网址 | 中文字幕欧美日韩va免费视频 | 人人添人人澡人人澡人人人爽 | 九热精品| 97精品国产91久久久久久 | 婷婷天天色 | 国产精品永久在线观看 | 91香蕉视频污在线 | 精品一区精品二区高清 | 国产精品成人一区二区三区吃奶 | 国产精品美女久久久久久网站 | 久久成人午夜 | 免费日韩电影 | 毛片无卡免费无播放器 | 精久久久久 | 免费观看www视频 | 国产精品久久久久aaaa九色 | 啪嗒啪嗒免费观看完整版 | 米奇狠狠狠888 | 国产精品国产三级国产 | 色婷婷亚洲精品 | 成人av一区二区在线观看 | 99精品久久精品一区二区 | 字幕网在线观看 | bbw av| 少妇bbw撒尿 | 色婷婷综合视频在线观看 | 91成人欧美 | 黄色中文字幕在线 | 欧美在线观看视频免费 | 欧美视频日韩视频 | 成年人电影免费看 | 久久免费福利视频 | 欧美电影在线观看 | av免费片| 超碰在线最新网址 | 欧美色综合天天久久综合精品 | 国产69精品久久99不卡的观看体验 | 在线观看国产高清视频 | 久久国产系列 | 久久综合欧美精品亚洲一区 | 91精品国产一区二区三区 | 免费男女羞羞的视频网站中文字幕 | 美女久久久久久久 | 99热在线这里只有精品 | 午夜久久久久久久 | 亚洲国产一区二区精品专区 | 91探花国产综合在线精品 | 日韩,精品电影 | 久久久精品成人 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 狠狠色丁香婷婷综合欧美 | 亚洲欧美经典 | 日韩欧美成 | 亚洲污视频 | 99久久精品免费看国产 | 91视频链接 | 丁香婷婷深情五月亚洲 | 欧美一级视频在线观看 | 精品国产乱码久久久久久久 | www.人人干 | 毛片网站观看 | 亚洲高清视频在线播放 | 中文字幕在线资源 | 五月天久久综合 | 黄色在线观看污 | av女优中文字幕在线观看 | av电影免费在线看 | 国产在线小视频 | av资源中文字幕 | 亚洲国产日韩一区 | 中文字幕免费观看视频 | 天天天干夜夜夜操 | 国产视频 久久久 | 九九九视频精品 | 久久一区国产 | 中文字幕视频播放 | 91麻豆精品国产自产在线 | 亚洲va欧洲va国产va不卡 | 91亚洲精品久久久 | 中文字幕一区在线 | 免费日韩视 | 国产精品久久免费看 | 久久精品视频观看 | 国产精品成人av电影 | 97视频在线播放 | 黄色aa久久 | 亚洲成a人片77777kkkk1在线观看 | 精品超碰 | 久久久久久久久福利 | 亚洲jizzjizz日本少妇 | 亚洲精品成人av在线 | 亚洲综合导航 | 日韩av午夜在线观看 | 一级α片免费看 | 97手机电影网| 日韩精品一区二区三区外面 | 国产又粗又猛又色又黄网站 | 最近中文字幕国语免费高清6 | 久草新在线 | 伊人狠狠色 | 五月婷婷黄色网 | 国产一区二区高清不卡 | 国产精品久久久久一区 | 欧美日韩国产三级 | 亚洲91av| 久久99在线观看 | 日韩一区在线播放 | 国产黄视频在线观看 | 99精品视频精品精品视频 | 亚洲国产精品久久 | 摸bbb搡bbb搡bbbb | 精品少妇一区二区三区在线 | 精品在线视频观看 | 欧日韩在线视频 | 久久久久国产a免费观看rela | 精品国产乱码久久久久 | 亚洲精品动漫久久久久 | 久久久久国产一区二区 | 国产在线观看中文字幕 | 中文字幕 影院 | 97人人模人人爽人人喊网 | 日韩欧美在线视频一区二区三区 | 中文字幕第一页在线 | 国产精品久久久久免费 | 天天操夜夜操国产精品 | 97在线公开视频 | 国产精品九色 | 日韩午夜网站 | 国产精品成人一区 | 国产午夜小视频 | 亚洲精品一区二区18漫画 | www.亚洲黄 | 91免费观看| 在线免费观看麻豆视频 | 91麻豆精品国产91久久久使用方法 | 欧美激情视频一区 | 在线观看不卡视频 | 久久久www成人免费毛片 | 欧美最新另类人妖 | 91网在线 | 99久在线精品99re8热视频 | 国产中文字幕视频在线观看 | 国产精久久久久久妇女av | 韩日色视频| 国产理论片在线观看 | 在线亚洲午夜片av大片 | 国产午夜亚洲精品 | 精品国产乱码久久久久久天美 | 麻豆视频免费在线播放 | 91精品国产三级a在线观看 | 日韩一区二区三免费高清在线观看 | 国产精品成人国产乱 | 亚州精品天堂中文字幕 | 精品国产一区二区三区久久久久久 | 国产一区高清在线观看 | 久久另类小说 | 欧美一区二区三区在线观看 | 久久国产女人 | 91少妇精拍在线播放 | 天天综合成人 | 天堂网av在线 | 国产中年夫妇高潮精品视频 | 日韩电影中文,亚洲精品乱码 | 精品在线小视频 | 四虎永久免费网站 | 91丨精品丨蝌蚪丨白丝jk | 国产精品久久久久久久久久久免费看 | 欧美色道 | 久久久国产一区二区 | 久久久免费观看视频 | 中文字幕在线视频免费播放 | 中文字幕在线观看第二页 | 一区二区三区 中文字幕 | 免费视频久久 | 中文伊人| 亚洲精品久久久久999中文字幕 | 日韩av电影中文字幕 | 午夜在线看 | 国产粉嫩在线 | 久久综合九色九九 | 国产高清免费在线播放 | 国产精品久久婷婷六月丁香 | 亚洲第一中文字幕 | 丁香婷婷色综合亚洲电影 | 成人a大片 | 日韩精品久久久久久久电影竹菊 | 成人黄色电影视频 | 去看片| 日韩丝袜在线观看 | 欧美9999| 伊人天天色 | 精品国产一区二区三区久久久蜜臀 | 久久99久久久久久 | 全久久久久久久久久久电影 | 高清视频一区二区三区 | 成人在线黄色 | 国产精品久久久久久久久久 | 一区二区精品在线视频 | 欧美韩国日本在线 | 国内精品视频一区二区三区八戒 | 成全在线视频免费观看 | 日韩视频免费 | 欧美日韩在线视频免费 | 久精品视频 | 天天射综合网视频 | 亚洲精品在线国产 | 免费看黄色91| 精品人妖videos欧美人妖 | 久久亚洲美女 | 91传媒在线播放 | 久久综合久色欧美综合狠狠 | 婷婷色网视频在线播放 | 91在线看视频| 天天操天 | 国产精品成人一区二区三区 | 在线播放日韩av | 欧美色888| 日韩 在线观看 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 久久国产欧美日韩精品 | 色视频在线免费观看 | 精品久久久久久国产偷窥 | 精品国产伦一区二区三区观看方式 | 国产高清不卡av | 亚洲乱码精品久久久 | 久久夜色精品国产欧美乱极品 | 日本性生活免费看 | 日韩精品资源 | 日韩久久精品一区二区三区 | 黄污视频大全 | 精品久久久久久久久久久久久久久久 | 欧美小视频在线观看 | 欧洲精品视频一区 | 91在线资源 | 97精品欧美91久久久久久 | 国产一区在线免费观看 | 97视频人人澡人人爽 | 欧美大荫蒂xxx | 成人av网站在线播放 | 韩国av不卡 | 国产一级二级av | 韩国一区在线 | 开心婷婷色 | 久久在线播放 | 成人高清在线 | 久久永久免费视频 | 五月婷婷在线观看视频 | 国产精品video爽爽爽爽 | 97人人射| 蜜桃视频精品 | 日韩在线观看电影 | 美女网站在线观看 | 欧美淫aaa免费观看 日韩激情免费视频 | 久久99国产精品自在自在app | 亚洲午夜久久久久久久久电影网 | 久久久久久久精 | 九九免费观看全部免费视频 | 91最新视频 | 国产资源站 | 亚洲成av人影片在线观看 | 五月天电影免费在线观看一区 | 超碰97国产精品人人cao | 日韩高清dvd | av高清在线观看 | 涩五月婷婷 | 91精品久久久久久久久久入口 | 丁香久久综合 | 9999精品视频 | 麻豆视频国产 | av在线影视 | 精品国产乱码久久久久久天美 | 蜜臀久久99静品久久久久久 | 国产中文字幕在线 | 亚洲欧洲一级 | 日本在线观看视频一区 | 日韩在线观看影院 | 天天综合天天做 | 777奇米四色 | 美女久久一区 | 69精品 | 久久免费电影 | 狠狠狠色| 国产色综合天天综合网 | 国产精品成久久久久三级 | 成人一区二区三区中文字幕 | 91视频在线 | 亚洲高清免费在线 | 一级a毛片高清视频 | 国产视频一区二区在线 | 亚洲理论在线观看 | 探花系列在线 | 亚洲精品国产精品国自产观看浪潮 | 玖玖爱免费视频 | 在线国产黄色 | 色婷婷狠狠五月综合天色拍 | 国产视频资源在线观看 | 日日夜夜综合 | 亚洲视频中文 | 最近免费中文字幕 | 亚洲在线视频播放 | 日韩av线观看 | 日韩高清免费在线 | 成人国产精品久久久 | 在线影院 国内精品 | 99精品久久99久久久久 | 免费网站看v片在线a | 亚洲色视频 | 久久国产免 | av色网站 | 欧美精品一区二区免费 | 色999精品 | 五月婷婷香蕉 | 亚洲 欧美变态 另类 综合 | 国产精品乱码一区二三区 | 黄色成人av网址 | 天天色天天干天天色 | 精品在线观看一区二区 | 日韩两性视频 | 中文字幕一区在线观看视频 | 国产精品毛片一区二区在线看 | 成人av免费网站 | 美女福利视频一区二区 | 草樱av | 91c网站色版视频 | 久视频在线播放 | 国产精品视频免费看 | 国产精品美女 | 欧美黑人性爽 | 五月天色婷婷丁香 | 99久久久久免费精品国产 | 黄色a在线观看 | 91亚洲视频在线观看 | 丁香激情综合 | av不卡在线看 | 久久一区二区三区超碰国产精品 | 国产精品系列在线播放 | 国产精品久久久久久久久久久久午夜 | 国产成人三级三级三级97 | 久射网| 中文av不卡 | 久久久福利视频 | 色香网| 婷婷国产v亚洲v欧美久久 | 在线观看免费色 | 久久久精品国产免费观看一区二区 | 亚洲电影影音先锋 | 欧美伦理一区 | 国内视频一区二区 | 97视频免费在线看 | 久久精品黄色 | 亚洲视频www| 91热视频在线观看 | av五月婷婷| 欧美亚洲一区二区在线 | 91九色精品女同系列 | 日日操天天射 | 女人18精品一区二区三区 | 久久久色 | 人人擦| 久久国产三级 | 日韩视频一二三区 | 超碰免费久久 | 日韩黄色免费电影 | 久久综合九色综合久久久精品综合 | 四虎在线永久免费观看 | 精品一二三四视频 | 91麻豆精品国产91久久久久久久久 | 人人草在线视频 | 色偷偷888欧美精品久久久 | 精品二区视频 | 国产亚洲人成网站在线观看 | 黄色av大片 | 狠狠综合 | www.久久色 | 天天干天天操天天入 | 国产一区二区精品久久 | 久久久精品一区二区 | 久久免费的精品国产v∧ | 国产精品原创av片国产免费 | 亚a在线 | 日本h在线播放 | 国产一区二区高清不卡 | 91视视频在线直接观看在线看网页在线看 | 欧洲激情在线 | 国产精品久久久久久久久久白浆 | 国产精品久久久久三级 | 黄色在线免费观看网址 | 久久成年人视频 | 成人国产精品电影 | 97在线观看免费 | 欧美影片 | 一级黄色在线免费观看 | 国产精品麻豆99久久久久久 | 国产人成看黄久久久久久久久 | 欧美片网站yy | 99久久婷婷国产 | 日本中文乱码卡一卡二新区 | 日韩黄色在线观看 | 97精产国品一二三产区在线 | 日本中文字幕在线 | 国产又粗又猛又爽又黄的视频免费 | avcom在线 | 国产成人精品亚洲 | 免费在线观看不卡av | 欧洲精品二区 | 色偷偷网站视频 | 久久国产免费 | 亚洲黄色三级 | 99国内精品久久久久久久 | 免费看的av片 | 国产精品久久久999 国产91九色视频 | 国产麻豆电影在线观看 | 久草在线资源免费 | 日本性久久 | 午夜精品久久久久久久99无限制 | 国产在线免费av | 成人影视免费看 | 成人免费av电影 | 国产精品美女久久久久久免费 | 亚洲国产精品成人综合 | 久久精品第一页 | 天天色.com| 国产精品一区电影 | 国产精品一区二区在线播放 | 有码一区二区三区 | 综合成人在线 | 亚洲精品久久久久999中文字幕 | 亚洲国产午夜视频 | 91av超碰| 一区二区三区动漫 | 久草在线资源观看 | 91在线视频 | 国产黄色在线看 | 国产精品女人久久久 | 国产一卡久久电影永久 | 狠狠黄 | 成人黄色毛片 | 亚洲精品视频中文字幕 | 久久综合色婷婷 | 欧美孕妇与黑人孕交 | 日韩精品在线视频 | 一区在线观看 | 成人av视屏 | av免费看网站 | 国产精品系列在线播放 | 中文字幕资源网 国产 | 国产精品一区二 | 中文字幕在线观看第三页 | 亚洲一级片在线观看 | 中文字幕精 | 就色干综合 | 99免费在线观看 | 欧美成人h版在线观看 | 国产日本三级 | 亚洲一区二区三区四区在线视频 | 国产又黄又爽又猛视频日本 | 一本一本久久a久久精品综合妖精 | 日日射天天射 | 久久久久电影 | 永久免费观看视频 | 国产精品久久久久久久久久久久午夜片 | 天堂麻豆 | 人人干天天干 | 婷婷五月情 | 粉嫩aⅴ一区二区三区 | 国产在线不卡一区 | 在线成人免费av | 在线免费精品视频 | 午夜国产在线观看 | 伊甸园永久入口www 99热 精品在线 | 欧美精品久久久久久久久久丰满 | 黄色在线免费观看网址 | 国产视频精品网 | 右手影院亚洲欧美 | 久久黄色精品视频 | av福利超碰网站 | a级国产乱理论片在线观看 伊人宗合网 | 亚洲精品黄网站 | 特级西西444www高清大视频 | a视频免费看 | 亚洲不卡123| 96精品在线| 亚洲精品色 | 天天操天天操天天爽 | 色婷婷综合久久久久 | 成人黄色在线电影 | 久久精品久久精品 | 麻豆91在线看 | 国产精品黄色影片导航在线观看 | 韩国在线一区二区 | 91在线播放国产 | 中文字幕 在线 一 二 | 99在线视频免费观看 | 国产精品都在这里 | 91av手机在线 | 国产毛片在线 | 黄色毛片在线观看 | 黄色免费观看视频 | 久久久久久久久久久网 | 日日夜夜精品免费观看 | 怡春院av | 99视屏| 日本超碰在线 | 99精品免费在线观看 | 久久免费av电影 | 国产在线精品二区 | 狠狠干在线播放 | 国产精品久久麻豆 | 亚洲视频在线免费观看 | 日韩区欠美精品av视频 | 色先锋av资源中文字幕 | 色婷婷激情综合 | 久久精品中文字幕一区二区三区 | 亚洲综合色丁香婷婷六月图片 | 国产一区二区三区在线免费观看 | 久久久久国产成人精品亚洲午夜 | 亚洲国产精品成人综合 | 国产麻豆精品传媒av国产下载 | 中文字幕在线观看国产 | 视频二区 | 亚洲一区二区精品视频 | 国产精品成 | 亚洲精品免费观看视频 | 亚州天堂 | 中文字幕中文字幕在线中文字幕三区 | 午夜黄网 | 97碰在线视频 | 狠狠躁夜夜a产精品视频 | 亚洲日本欧美 | 日韩在线视频免费播放 | 国产精品久久久久久久久搜平片 | 一区二区久久久久 | 一区在线播放 | 最新av网址在线 | 伊人黄色网 | 色综合亚洲精品激情狠狠 | 日韩欧美aaa | 人人爽人人爱 | 婷婷久久网站 | 1000部18岁以下禁看视频 | 精品国自产在线观看 | www久久99 | 中文字幕一区二区三区在线视频 | 国产97在线看 | 国产麻豆视频 | 久久一区国产 | 国产精品久久一区二区三区, | 国产一区在线观看免费 | 久久久久成人免费 | 久久久久女教师免费一区 | www久草 | av综合在线观看 | 欧美精品亚洲精品 | 97在线观 | 精产嫩模国品一二三区 | 日韩欧美一区二区三区黑寡妇 | 久久视频免费在线观看 | 久久理论电影 | 久久综合久久久 | 久久久久久久久久网 | 久久国产成人午夜av影院宅 | 日本字幕网 | 992tv成人免费看片 | 精品视频久久 | 免费色网 | 最近中文字幕视频网 | 美女一区网站 | 国产免费av一区二区三区 | 99re国产视频 | 丰满少妇麻豆av | 色妞色视频一区二区三区四区 | 狠狠躁天天躁 | 国产亚洲精品久久久久久久久久久久 | 国产精品一区二区在线看 | 高清视频一区 | 日韩大陆欧美高清视频区 | 亚洲综合爱| 国产精品中文字幕av | 国产精品久久久久久久久久久久午夜片 | 亚洲视频第一页 | 中文字幕在线播放第一页 | 亚洲免费成人av电影 | 日韩在线观看的 | 久久精品爱爱视频 | 一区二区三区视频在线 | 人人爽人人爽 | 久草视频一区 | 正在播放 久久 | 久久一区二区免费视频 | 成人免费观看网站 | 香蕉在线观看视频 | 免费午夜在线视频 | 天天天色 | 国产黄免费在线观看 | 一级黄色片毛片 | 成人免费视频播放 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 国产免费视频一区二区裸体 | 久久亚洲欧美 | 国产成人一区二区三区久久精品 | 伊人狠狠| 午夜av在线电影 | 蜜臀av网址 | 午夜精品久久久久久99热明星 | 偷拍福利视频一区二区三区 | 丁香九月激情综合 | 97av在线视频| 少妇精69xxtheporn |