学习参考:https://blog.csdn.net/c252270036/article/details/77126777
利用iTween来控制攻击的优先权。
关于iTween可看:https://blog.csdn.net/leanerU/article/details/84257191
将GameControl脚本附加给任意一个空物体,作为游戏控制单位(可重命名为GameControl)。
//iTween代码
void Update () {
if (GameControl._Instance.isAttackOver)//用来判断是否结束攻击
{
iTween.Resume(gameObject.transform.parent.gameObject, true);
GameControl._Instance.isAttackOver = false;
}
}
void funName()
{
iTween.Pause(gameObject.transform.parent.gameObject, true);
print(GameControl._Instance.gameObject.transform.name);
if (gameObject.tag == "EnemyUnit")//gameObject 指Icon
{
EnemyControl._Instace.IsEnemyAttack = true;//敌人攻击回合
}
else if (gameObject.tag == "PlayerUnit")
{
PlayerControl._Instace.IsRoleAttack = true;//主角攻击回合
}
}
public bool isWaitForPlayer = false;
public bool isEnemyAction=false;
public bool isAttackOver = false;
public static GameControl _Instance=null;
public enum GameState//GameState枚举
{
Menu,
Game,
Over
}
public GameState currentState = GameState.Menu;当前游戏状态
private void Awake()//单例
{
if(_Instance==null)
{
_Instance = this;
}
else if(_Instance!=this )
{
Destroy(this.gameObject);
}
}
按钮选择是利用OnGUI()设置,新生一个窗口需要在OnGUI()方法内部调用GUI.Window()。如果在除OnGUI()外部调用则会报错。
GUI.Window(0, new Rect(Screen.width / 2 - 100, Screen.height / 2 - 30, 200, 60), GameStartConfim, "战斗开始");
GUI.Window()方法第一个参数为int id值,不可重复。第二个为Rect,设置窗口位置,大小。第三个为窗口的Function方法,最后一个为显示的名称(提示框名称)。
void GameStartConfim(int Id)
{
if(GUI.Button(new Rect(50,30,100,20),"开始战斗"))
{
currentState = GameState.Game;
}
}
Function方法参数需为int Id,然后就可以添加UI界面中的Text,Button,Label等等。
主要是通过ITween播放完调用oncomplete参数后的funName方法去实现攻击的游戏权。