Morning:
初步目标:把炮台的拆解升级等逻辑做出来。
添加UGUI ,升级与拆的button.然后添加动画。。。
//遇到ZZ问题。。 Animation是老版本的动画系统,帧动画,animator是新的状态机,
所以编辑动画轻点Animation..。
服。遇到bug改了半天。。都报错。。改回去了。又突然不报错了
加个升级。。以上午就搞出这个。。心痛
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class BuildManager : MonoBehaviour {
public TurretData laserTurretData;
public TurretData missileTurretData;
public TurretData standarTurretData;
private int money=10000 ;
public Animator moneyAnimator;
public GameObject upgradeCanves;
public Button buttonUpgrade;
public Text moneyText;
//当前选择炮台
private TurretData selectTurretType;
void ChangeMoney(int change=0){
money += change;
moneyText.text = "¥" + money;
}
void Update(){
if (Input.GetMouseButton(0)) {
if(EventSystem.current.IsPointerOverGameObject()==false) //查API得。。。 (若是移动端 要传参)
{
//炮台建造,Cube若是空 若非空
Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);
// Debug.Log ("er");
RaycastHit hit;
bool isCollider=Physics.Raycast (ray,out hit,1000,LayerMask.GetMask("MapCube"));
if (isCollider ) {
MapCube mapCube = hit.collider.GetComponent<MapCube>();//得到点击的mapCube
if (mapCube.turretGo == false&&selectTurretType!=null) {
//可以创建
if (money >= selectTurretType.cost) {
ChangeMoney (-selectTurretType.cost);
mapCube.BuildTurret (selectTurretType.turretPrefab);
} else {
//提示钱够不够。..。
moneyAnimator.SetTrigger("Flicker");
}
} else if(mapCube.turretGo!=null) {
//升级
Vector3 tmp=mapCube.transform.position;
tmp.y += 10;
ShowupgradeUI(tmp,mapCube.isUpgraded);
}
}
}
}
}
public void OnLaserSelected(bool isOn){
if (isOn) {
selectTurretType = laserTurretData;
}
}
public void OnMissileSelected(bool isOn){
if (isOn)
selectTurretType = missileTurretData;
}
public void OnStandardSelected(bool isOn){
if (isOn)
selectTurretType = standarTurretData;
}
void ShowupgradeUI(Vector3 pos,bool isDisableUpgrade=false){
upgradeCanves.SetActive (true);
upgradeCanves.transform.position = pos;
buttonUpgrade.interactable = !isDisableUpgrade;
}
void HideupgradeUI(){
upgradeCanves.SetActive (false);
}
public void OnUpgradeButtonDown(){
//TODO
}
public void OnDestroyButtonDown(){
}
}