目录

AudioManager

BullectControl

BulletGet

Collect

Damage

Follow

NextMission

NPCManager

MissionShow

PlayerControl

RobotControl

ScriptSelect

UIEntry

UIManager


AudioManager

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class AudioManager : MonoBehaviour
{public static AudioManager instance { get; private set; }private AudioSource audioS;// Start is called before the first frame updatevoid Start(){instance = this;audioS = GetComponent<AudioSource>();}// Update is called once per framevoid Update(){}public void AudioPlay(AudioClip clip){audioS.PlayOneShot(clip);}
}

BullectControl

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Pathfinding;public class BulletControl : MonoBehaviour
{Rigidbody2D rbody;//子弹命中声public AudioClip hitClip;// Start is called before the first frame update
void Awake(){rbody = GetComponent<Rigidbody2D>();//2秒后不管打没打中,子弹销毁子弹Destroy(this.gameObject, 2f);}// Update is called once per framevoid Update(){}//子弹发射,射击public void Shoot(Vector2 moveDirection,float moveForce){rbody.AddForce(moveDirection * moveForce);}//子弹命中private void OnCollisionEnter2D(Collision2D collision){//调用机器人控制脚本的修复函数,修改机器人的状态RobotControl ec = collision.gameObject.GetComponent<RobotControl>();if (ec!=null){ec.Fixed();//杀敌if (RobotControl.isFixed%2==0){collision.gameObject.GetComponent<AIPath>().enabled = false;PlayerControl.enemyleft--;//更改玩家控制中的击杀数,以此判断任务是否完成,格式:脚本名.静态变量--;Debug.Log("当前敌人数:" + PlayerControl.enemyleft);}if (RobotControl.isFixed%2 != 0){//打开命中对象的AI组件collision.gameObject.GetComponent<AIPath>().enabled = true;//collision.gameObject.GetComponent<RobotControl>().enabled = false;//RobotControl.AIon();//ScriptSelect.changestatus();}Debug.Log("命中敌人了");}//播放命中声AudioManager.instance.AudioPlay(hitClip);//立即销毁子弹Destroy(this.gameObject);}
}

BulletGet

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class BulletGet : MonoBehaviour
{public int bulletCount=10;public ParticleSystem collectEffect;private void OnTriggerEnter2D(Collider2D collision){PlayerControl pc = collision.GetComponent<PlayerControl>();if(pc!=null){if(pc.MyCurBulletCount<pc.MyMaxBulletCount){pc.ChangeBulletCount(bulletCount);Instantiate(collectEffect, transform.position, Quaternion.identity);Destroy(this.gameObject);}}}
}

Collect

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Collect : MonoBehaviour
{public ParticleSystem collectEffect;public AudioClip collectClip;// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){}private void OnTriggerEnter2D(Collider2D other){PlayerControl pc = other.GetComponent<PlayerControl>();if(pc!=null){if(pc.MyCurrentHealth<pc.MyMaxHealth){pc.chnageHealth(1);Instantiate(collectEffect, transform.position, Quaternion.identity);AudioManager.instance.AudioPlay(collectClip);Destroy(this.gameObject);}Debug.Log("玩家碰到了草莓!");}}
}

Damage

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Damage : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){}private void OnTriggerStay2D(Collider2D other){PlayerControl pc = other.GetComponent<PlayerControl>();if(pc!=null){pc.chnageHealth(-1);}}
}

Follow

using UnityEngine;
using System.Collections;public class Follow : MonoBehaviour
{//目的地,射线与平面的交点private Vector2 hitPoint;//自动导航速度public float speed = 3;//是否点击private bool clicked = false;//定义动画Animator anim;//初始屏幕看Vector2 lookDirection = new Vector2(0, -1);// Use this for initializationvoid Start(){//获取动画组件anim = GetComponent<Animator>();}// Update is called once per framevoid Update(){//方向向量Vector2 curposition = new Vector2(gameObject.transform.position.x, gameObject.transform.position.y);Vector2 moveDirection = hitPoint - curposition;if (moveDirection.x != 0 || moveDirection.y != 0){lookDirection = moveDirection;}//按下鼠标左键if (Input.GetMouseButtonDown(0)){Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit2D raycast = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);if (raycast.collider != null){hitPoint = new Vector2(raycast.point.x, raycast.point.y);Debug.Log(raycast.point.x+"/"+ raycast.point.y);Debug.Log("clicked object name is ---->" + raycast.collider.gameObject);}clicked = true;}if (clicked) gameObject.transform.position = Vector2.MoveTowards(gameObject.transform.position, hitPoint, Time.deltaTime * speed);//如果到达、则停止这次自动导航if (gameObject.transform.position.x== hitPoint.x && gameObject.transform.position.y== hitPoint.y){clicked = false;//默认停止显示正面或反面anim.SetFloat("move X", 0);anim.SetFloat("move Y", lookDirection.y);anim.SetFloat("runspeed", 0);Debug.Log(lookDirection);}//如果在自动前往目的地时,按下了方向键,撤销这次自动导航if(Input.GetAxisRaw("Horizontal")!=0||Input.GetAxisRaw("Vertical")!=0){clicked = false;}//如果这次自动导航未被打断,并且未结束,为运动中的动画状态集赋值,结束后回到运动前的朝向if (clicked == true && moveDirection.x != 0 && moveDirection.y != 0){//为动画集赋值//状态集的切换由运动矢量决定anim.SetFloat("move X", lookDirection.x);anim.SetFloat("move Y", lookDirection.y);anim.SetFloat("runspeed", moveDirection.magnitude);Debug.Log(lookDirection);}}
}

NextMission

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;public class NextMission : MonoBehaviour
{Rigidbody2D rbody;// Start is called before the first frame updatevoid Start(){rbody = GetComponent<Rigidbody2D>();}// Update is called once per framevoid Update(){}public void OnCollisionEnter2D(Collision2D collision){if (PlayerControl.showflag == 1){SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);}}}

NPCManager

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class NPCManager : MonoBehaviour
{public GameObject dialogImage;public GameObject tipImage;public Text text;public float showTime = 4;private float showTimer;// Start is called before the first frame updatevoid Start(){tipImage.SetActive(true);dialogImage.SetActive(false);showTimer = -1;}// Update is called once per framevoid Update(){showTimer -= Time.deltaTime;if(showTimer<0){tipImage.SetActive(true);dialogImage.SetActive(false);}}public void ShowDialog(){//调用PlayerControl脚本的标记,判断任务是否完成,完成则修改文本if(PlayerControl.showflag==1){text.text= "青蛙先生:\n任务已完成,你现在可以进入城堡了!";}showTimer = showTime;dialogImage.SetActive(true);tipImage.SetActive(false);}
}

MissionShow

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class MissionShow: MonoBehaviour
{public GameObject MissionBar;private float showTimer=3;// Start is called before the first frame updatevoid Awake(){MissionBar.SetActive(true);}// Update is called once per framevoid Update(){showTimer -= Time.deltaTime;if (showTimer < 0){MissionBar.SetActive(false);}}
}

PlayerControl

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;public class PlayerControl : MonoBehaviour
{//主角速度public float speed = 8f;//定义2d刚体Rigidbody2D rbody;//定义动画Animator anim;//初始屏幕看Vector2 lookDirection = new Vector2(0, -1);//定义一个机器人对象GameObject robotObj;//最大健康值private int maxHealth = 2;//改为2;//当前健康值private int currentHealth;//其他脚本可获取最大健康值public int MyMaxHealth { get { return maxHealth; } }//其他脚本可获取当前健康值public int MyCurrentHealth { get { return currentHealth; } }//无敌时间private float wuditime = 2f;//无敌计时器private float wuditimer;//无敌状态private bool isWudi;//子弹数量[SerializeField]private int curBulletCount=1;private int maxBulletCount=6;public float gametime=0;public int MyCurBulletCount { get { return curBulletCount; } }public int MyMaxBulletCount { get { return maxBulletCount; } }//子弹预制体public GameObject bulletPrefab;//敌人剩余数量public static int enemyleft;//public int curEnemyleft { get { return enemyleft; } }//游戏结束提示public GameObject GameOver;//指定为主角并销毁public GameObject GameOverPlayer;//任务完成提示public GameObject MissionCompleted;//无法实现在其他脚本中销毁提示,故在此脚本中限时销毁public float showTime = 3;private float showTimer;//智能提示框计时器public float tiptime = 6;private float tiptimer;//任务完成标记,显示标志,一场游戏中只显示一次public static int showflag=0;//玩家音效public AudioClip hitClip;public AudioClip launchClip;//智能提示文本public Text tips;public GameObject tipsframe;// Start is called before the first frame updatevoid Start(){//操作方式选择ctrlway();//任务完成状态的初始化showflag = 0;//隐藏任务完成提示MissionCompleted.SetActive(false);//提示计时器设置为负值showTimer = -1;tiptimer = -1;//开始游戏后初始化敌人数量SetEnemyNum();//获取2d刚体rbody = GetComponent<Rigidbody2D>();//获取动画组件anim = GetComponent<Animator>();//初始化生命值currentHealth = 1;//初始化无敌时间wuditimer = 0;//更新生命条与子弹数量UIManager.instance.UpdateHealthBar(currentHealth, maxHealth);UIManager.instance.UpdateBulletCount(curBulletCount, maxBulletCount);}// Update is called once per framevoid Update(){if(showflag!=1){UpdateTime();}UpdateEnemyLeft();//任务完成显示 计时器showTimer -= Time.deltaTime;//提示框显示 计时器tiptimer -= Time.deltaTime;//超过时间就取消显示任务完成if (showTimer < 0){   MissionCompleted.SetActive(false);}/*//超过时间就取消显示提示文本if(tiptimer<0){tipsframe.SetActive(false);}*///取消显示提示文本if(showTimer+5<0){tipsframe.SetActive(false);}//敌人数量为0,并且是第一次达到0,之前没有完成任务,任务完成if (enemyleft==0 && showflag != 1){//给倒计时器赋值,以此显示提示showTimer = showTime;//已经完成任务了,标记一下,之后不再显示showflag = 1;//显示任务完成提示MissionCompleted.SetActive(true);//显示前往下一关的提示tip();}//如果生命值为0,显示游戏结束字样,并销毁主角if (currentHealth==0){GameOver.SetActive(true);tip();GameObject.Find("Ruby").GetComponent<PlayerControl>().enabled = false;//gameObject.SetActive(false);//Destroy(GameOverPlayer);}//如果没有子弹了,则进行提示if(curBulletCount==0 && currentHealth!=0){tip();}//如果游戏超时,则进行提示if (gametime > 180){tip();}float moveX=0;float moveY=0;//如果没有禁用键盘if (UIEntry.ctrlflag != 2){//获取运动矢量moveX = Input.GetAxisRaw("Horizontal");moveY = Input.GetAxisRaw("Vertical");}Vector2 moveVector = new Vector2(moveX, moveY);if(moveX!=0||moveY!=0){lookDirection = moveVector;}Vector2 position = transform.position;position.x += moveX * speed * Time.deltaTime;position.y += moveY * speed * Time.deltaTime;transform.position = new Vector2(position.x, position.y);//用刚体移动可以消除画面抖动rbody.MovePosition(position);//为动画集赋值//状态集的切换由运动矢量决定anim.SetFloat("move X",lookDirection.x);anim.SetFloat("move Y",lookDirection.y);anim.SetFloat("runspeed", moveVector.magnitude);//赋值必须与状态集命名一样//如果处于无敌状态,就计时if(isWudi){wuditimer -= Time.deltaTime;//计时器归0,就不处于无敌状态了if(wuditimer<0){isWudi = false;}}//当按下J,并且子弹大于0,开火(没有禁用键盘)if(Input.GetKeyDown(KeyCode.J) && curBulletCount>0 && UIEntry.ctrlflag != 2){ChangeBulletCount(-1);anim.SetTrigger("Launch");AudioManager.instance.AudioPlay(launchClip);GameObject bullet = Instantiate(bulletPrefab, rbody.position+Vector2.up*0.5f, Quaternion.identity);BulletControl bc = bullet.GetComponent<BulletControl>();if(bc!=null){bc.Shoot(lookDirection, 300);}}//按下鼠标左键,开枪(没有禁用鼠标)if (Input.GetMouseButtonDown(1) && curBulletCount > 0 && UIEntry.ctrlflag != 3){RaycastHit2D raycast = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);Vector2 hitPoint = new Vector2(raycast.point.x, raycast.point.y);Vector2 curposition = new Vector2(gameObject.transform.position.x, gameObject.transform.position.y);Vector2 ShootDirection = hitPoint - curposition;ChangeBulletCount(-1);anim.SetTrigger("Launch");AudioManager.instance.AudioPlay(launchClip);GameObject bullet = Instantiate(bulletPrefab, rbody.position + Vector2.up * 0.5f, Quaternion.identity);BulletControl bc = bullet.GetComponent<BulletControl>();if (bc != null){bc.Shoot(ShootDirection, 300);//lookDirection}}//按E与npc交互if (Input.GetKeyDown(KeyCode.E)){RaycastHit2D hit = Physics2D.Raycast(rbody.position, lookDirection, 2f, LayerMask.GetMask("NPC"));if(hit.collider!=null){Debug.Log("hit npc!");NPCManager npc = hit.collider.GetComponent<NPCManager>();if(npc!=null){npc.ShowDialog();}}}}private void OnTriggerEnter2D(Collider2D collision){//踩到雷区,自动生成僵尸float robotX = Random.Range(-3, 5);float robotY = Random.Range(-3, 5);Vector2 position_robot = new Vector2(robotX, robotY);if(collision.gameObject.tag=="bomb")//如果碰到雷区{print("other.tag=" + collision.gameObject.tag);//这句一定要有,不然出不来robotObj = Instantiate(Resources.Load("Prefabs/Robot"),position_robot,Quaternion.identity)as GameObject;//加载资源,生成一个预制体,做成一个对象}}private void OnTriggerExit2D(Collider2D collision){//离开雷区,僵尸消失if(collision.gameObject.tag=="bomb"){Destroy(robotObj);}}public void changeHealth(int amount){//可能是受到伤害,也可能是加血if(amount<0){//如果是受伤,设置无敌状态,则2秒内不能受伤if(isWudi==true){return;}isWudi = true;//播放受伤动画anim.SetTrigger("Hit");//播放受伤音效AudioManager.instance.AudioPlay(hitClip);//为无敌计时器赋值wuditimer = wuditime;}//更改健康值currentHealth = Mathf.Clamp(currentHealth+amount,0,maxHealth);//更新血条UIManager.instance.UpdateHealthBar(currentHealth, maxHealth);//调试Debug.Log(currentHealth + "/" + maxHealth);}public void ChangeBulletCount(int amount){//改变子弹数curBulletCount = Mathf.Clamp(curBulletCount + amount, 0, maxBulletCount);//改变UI子弹数UIManager.instance.UpdateBulletCount(curBulletCount, maxBulletCount);}public void UpdateTime(){//游戏时间gametime += Time.deltaTime;//Debug.Log((int)gametime);//改变UI时间UIManager.instance.UpdateTimeBar((int)gametime);}public void UpdateEnemyLeft(){UIManager.instance.UpdateEnemyLeft(enemyleft);}void SetEnemyNum(){int index = SceneManager.GetActiveScene().buildIndex;if(index==1){enemyleft = 2;}if(index==2){enemyleft = 3;}}public void ctrlway(){if(UIEntry.ctrlflag==1){GameObject.Find("Ruby").GetComponent<PlayerControl>().enabled = true;GameObject.Find("Ruby").GetComponent<Follow>().enabled = true;}else if(UIEntry.ctrlflag == 2){//不能禁用这个脚本,改为在if语句中利用UIEntry.ctrlflag禁用操作//GameObject.Find("Ruby").GetComponent<PlayerControl>().enabled = false;GameObject.Find("Ruby").GetComponent<Follow>().enabled = true;}else if(UIEntry.ctrlflag == 3){GameObject.Find("Ruby").GetComponent<PlayerControl>().enabled = true;GameObject.Find("Ruby").GetComponent<Follow>().enabled = false;}}public void tip(){//tiptimer = tiptime;if(showflag==1){int index = SceneManager.GetActiveScene().buildIndex;if(index==1){tipsframe.SetActive(true);tips.text = "Tips:\n快前往城堡,进行下一关吧!";}else if(index==2){tipsframe.SetActive(true);tips.text = "Tips:\n亲亲、你已经通关了,请五星好评哦!";}}else if(currentHealth==0){tipsframe.SetActive(true);int index = SceneManager.GetActiveScene().buildIndex;if(index==1){tips.text = "Tips:\n该长教训了吧,哈哈!";}else if(index==2 && RobotControl.isFixed%2==1){tips.text = "Tips:\n机器人被激怒,会主动攻击人哦。尝试着对它连续完成两次攻击吧!";}else if (index == 2 && RobotControl.isFixed % 2 != 1){tips.text = "Tips:\n你可长点教训吧,哈哈!";}else{return;}}else if(curBulletCount==0 && currentHealth!=0){tipsframe.SetActive(true);tips.text = "Tips:\n没有子弹了,快去拾取子弹吧!";}else if(gametime>180){tipsframe.SetActive(true);tips.text = "Tips:\n游戏超时了哦";}}
}

RobotControl

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using Pathfinding;
using System.Runtime.CompilerServices;public class RobotControl : MonoBehaviour
{public float speed = 3f;//机器人要运动肯定要有一个速度Animator anim;//创建一个动画状态集的变量,用来设定动画状态集的值,利用Animator参数,要决定到底播放左边的动画还是右边的动画Rigidbody2D rbody;//为了防止角色抖动,用刚体的moveposition来确定位置public bool isVertical;//设定一个参数,判断是水平移动还是垂直移动Vector2 moveDirection;//设定一个运动方向的变量float changeTimer;//设定一个计时器,每过一段时间,机器人换一个方向运动public float changeDirectionTime = 2f;//计时器长度public static int isFixed;public ParticleSystem brokeneffect;public AudioClip fixedClip;GameObject collectObject;//public static GameObject AIObject;// Start is called before the first frame update
void Start(){anim = GetComponent<Animator>();//获取动画组件,一会儿要修改它的参数rbody = GetComponent<Rigidbody2D>();//获取2d刚体,一会儿要修改它的位置moveDirection = isVertical ? Vector2.up : Vector2.right;//初始状态下判断运动方向changeTimer = changeDirectionTime;//计时器初始化isFixed = 2;}// Update is called once per framevoid Update(){//if (isFixed==0) return;//如果被修复则不执行以下代码//这句导致第二个机器人不能运行changeTimer -= Time.deltaTime;//计时器每一帧都减小if(changeTimer<0){moveDirection *= -1;//如果小于0,改变方向changeTimer = changeDirectionTime;//改变方向后计时器重新初始化}Vector2 position = rbody.position;//定义一个二维向量位置坐标来获取刚体坐标position.x += moveDirection.x * speed * Time.deltaTime;//改变水平方向位置position.y += moveDirection.y * speed * Time.deltaTime;//改变垂直方向位置rbody.MovePosition(position);//为了防止抖动,调用刚体的moveposition,里面是二维向量的位置//设定动画状态集的参数,把moveDirection的值传递给move X/Yanim.SetFloat("move X", moveDirection.x);anim.SetFloat("move Y", moveDirection.y);}private void OnCollisionEnter2D(Collision2D collision){PlayerControl pc = collision.gameObject.GetComponent<PlayerControl>();if(pc!=null){pc.changeHealth(-1);//在括号内打分号自动打在括号后}}public void Fixed(){isFixed--;Debug.Log("IsFixed:" + isFixed);if (isFixed%2==0){AIoff();//ScriptSelect.closeAI();if (brokeneffect.isPlaying == true){brokeneffect.Stop();}AudioManager.instance.AudioPlay(fixedClip);rbody.simulated = false;//禁用物理anim.SetTrigger("fix");//播放被修复(打)的动画//加载预制体资源,掉落子弹RandomDrop();}}//随机掉落子弹或者草莓public void RandomDrop(){//草莓与子弹掉落概率为1:2。12~19生成草莓,20~31生成子弹,int num = (int)(Random.Range(12,31)/10);if(num%2==0){collectObject = Instantiate(Resources.Load("Prefab/BulletGet"), gameObject.transform.position, Quaternion.identity) as GameObject;}if(num%2==1){collectObject = Instantiate(Resources.Load("Prefab/CollectibleHealth"), gameObject.transform.position, Quaternion.identity) as GameObject;}}public void AIoff(){gameObject.GetComponent<AIPath>().enabled = false;gameObject.GetComponent<RobotControl>().enabled = true;}public static void AIon()//无法在此实现{//gameObject.GetComponent<AIPath>().enabled = true;//gameObject.GetComponent<RobotControl>().enabled = false;}
}

ScriptSelect

using Pathfinding;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class ScriptSelect: MonoBehaviour
{float changeTimer;//设定一个计时器,每过一段时间,机器人换一个方向运动public float changeTime = 10f;//计时器长度private bool status=true;// Start is called before the first frame updatevoid Start(){change();}// Update is called once per framevoid Update(){changeTimer -= Time.deltaTime;//计时器每一帧都减小if (changeTimer < 0){change();changeTimer = changeTime;//改变方向后计时器重新初始化}}public void change(){if(status==true){GameObject.Find("Robot/Robot").GetComponent<AIPath>().enabled = true;GameObject.Find("Robot/Robot").GetComponent<RobotControl>().enabled = false;status = false;return;}if (status == false){GameObject.Find("Robot/Robot").GetComponent<AIPath>().enabled = false;GameObject.Find("Robot/Robot").GetComponent<RobotControl>().enabled = true;status = true;return;}}public static void changestatus(){GameObject.Find("Robot/Robot").GetComponent<AIPath>().enabled = true;GameObject.Find("Robot/Robot").GetComponent<RobotControl>().enabled = false;}public static void closeAI(){GameObject.Find("Robot/Robot").GetComponent<AIPath>().enabled = false;GameObject.Find("Robot/Robot").GetComponent<RobotControl>().enabled = true;}
}

UIEntry

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;public class UIEntry : MonoBehaviour
{public GameObject about;private bool flag;public static int ctrlflag=1;public Text ctrltext;// Start is called before the first frame updatevoid Start(){flag = false;}// Update is called once per framevoid Update(){}public void StartGame(){SceneManager.LoadScene(1);}public void About(){if (flag == false){about.SetActive(true);flag = true;return;}if (flag == true){about.SetActive(false);flag = false;return;}}public void ctrl(){Debug.Log(ctrlflag);if(ctrlflag==1){ctrlflag=2;ctrltext.text = "鼠标";ctrltext.fontSize = 49;}else if (ctrlflag == 2){ctrlflag=3;ctrltext.text = "键盘";ctrltext.fontSize = 49;}else if (ctrlflag == 3){ctrlflag=1;ctrltext.text = "鼠标+键盘";ctrltext.fontSize = 28;}}
}

UIManager

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;public class UIManager : MonoBehaviour
{public static UIManager instance { get; private set; }//静音设置public GameObject music;public Text musicstatus;private bool musicflag=true;//音量控制public AudioSource volume;public Scrollbar volumebar;//帮助按钮public GameObject help;private bool helpflag;//显示Bar:血量、子弹、时间、敌人public Image healthBar;public Text bulletCountText;public Text TimeBar;public Text EnemyLeftBar;private void Awake(){instance = this;}//更新血条public void UpdateHealthBar(int curAmount,int maxAmount){healthBar.fillAmount = (float)curAmount / (float)maxAmount;}//更新子弹public void UpdateBulletCount(int curAmount,int maxAmount){bulletCountText.text = curAmount.ToString()+"/"+maxAmount.ToString();}//刷新时间public void UpdateTimeBar(int curtime){int min = curtime / 60;int sec = curtime % 60;if (sec < 10 && min<10){TimeBar.text = "0"+min.ToString() + ":0" + sec.ToString();}if (sec > 10 && min < 10){TimeBar.text = "0" + min.ToString() + ":" + sec.ToString();}}//更新敌人数public void UpdateEnemyLeft(int enemyleft){EnemyLeftBar.text = enemyleft.ToString();}//退出游戏public void ExitGame(){Application.Quit();}//静音public void MusicButton(){if (musicflag == false){volume.volume = 1;//music.SetActive(true);musicflag = true;musicstatus.text = "音乐:开";return;}if (musicflag == true){volume.volume = 0;//music.SetActive(false);musicflag = false;musicstatus.text = "音乐:关";return;}}//重新开始游戏public void ReStart(){int index = SceneManager.GetActiveScene().buildIndex;SceneManager.LoadScene(index);}//返回菜单public void Menu(){SceneManager.LoadScene(0);}//调节音量public void AdjustVolume(Scrollbar volumebar){volume.volume = volumebar.value;}//弹出帮助public void helpButton(){if (helpflag == false){help.SetActive(true);helpflag = true;return;}if (helpflag == true){help.SetActive(false);helpflag = false;return;}}
}

函数一览

>>代码分析脚本: C++ 提取代码中的函数

系统函数

Awake

Start
Update

Instantiate
Destroy

AudioPlay
PlayOneShot

AddForce

OnCollisionEnter2D

OnTriggerEnter2D

Fixed
GetMouseButtonDown
ScreenPointToRay
ScreenToWorldPoint
Raycast
Debug.Log

GetComponent<PlayerControl>()

MoveTowards
SetFloat
GetAxisRaw

SetTrigger

Find

GetMask

Range

Load

Clamp

MovePosition

SetFloat

ToString
SetActive

GetActiveScene
LoadScene

自定义函数

Shoot

ChangeBulletCount

ShowDialog

ctrlway

SetEnemyNum

ChangeBulletCount
UpdateHealthBar
UpdateBulletCount

UpdateTime
UpdateEnemyLeft
tip

AIoff

AIon

RandomDrop

change

changestatus

StartGame

About

ctrl

ExitGame

MusicButton
ReStart

Menu

AdjustVolume
helpButton

Unity 课设 脚本合集相关推荐

  1. shell_一键部署脚本合集 .

    shell一键部署脚本合集 1.shell脚本一键部署DNS正向解析 2.shell脚本一键部署PXE 3.shell脚本一键部署Apache 4.shell脚本一键部署Mysql

  2. 运维企业实战Shell脚本合集+万能工具箱

    文章目录 系统维护篇 服务器日常巡检脚本 下线登录用户 企业级Linux日常自动抓取服务器巡检.登录.执行命令记录+备份脚本 终端对话&广播消息 批量查询IP归属地+手机号归属地信息 Linu ...

  3. 青龙面板 脚本合集 20221017

    以往教程脚本大都失效,网上脚本合集,收集供下载. 下载:https://www.lanzouy.com/ilnLn0dyv3qd 密码:qlbh 脚本内容

  4. Windows常用脚本合集

    Windows 常用脚本合集 1.问题描述 因为使用windows一些常用命令需要手动操作,比如启用ssh链接,要先使用win+r输入cmd再输入ssh,有时候甚至ssh命令容易忘记,还需要查看帮助, ...

  5. 整理全网Shell脚本合集,Java脚本,运维脚本,告警脚本,监控脚本,日志脚本,docker脚本等---------持续更新!

    整理全网Shell脚本合集,Java脚本,运维脚本,告警脚本,监控脚本,日志脚本,docker脚本等---------持续更新! 一.ffmpeg脚本 1.1 打开进程,并判断进程数量 1.2 关闭进 ...

  6. opencv 常用脚本合集

    opencv 常用脚本合集 一.批量调整图片大小(c++) 二.OpenCV常用图像拼接方法 :直接拼接(硬拼) 三.opencv切割图像 四.图片从中间竖着切开 一.批量调整图片大小(c++) 在处 ...

  7. 【云小课合集】华为云小课最全合集来了,让您上云无忧

    [摘要] 云小课为您精挑华为云服务热门知识点,通过浅显易懂的图文描述,帮助您快速上手使用华为云. 类别 服务名 云小课链接 计算 弹性云服务器 [云小课]基础服务第1课   我该怎么选择云主机的规格? ...

  8. 25 个超棒的 Python 脚本合集(迷你项目)

    激动的心,颤抖的手. 微信搜索关注<Python学研大本营>,加入读者群,分享更多精彩 在本文中,我编译了 25 个 Python 程序的集合. 我已包含链接以了解有关每个脚本的更多信息, ...

  9. pythonista脚本合集_GitHub - xchenhao/You-are-Pythonista: 汇聚【Python应用】【Python实训】【Python技术分享】等等...

    You-are-Pythonista 汇聚[从零单排][实战项目][Python面试题][大航海][Python应用][Python错题集][技术沙龙][内推渠道]等等 [人人都是Pythonista ...

最新文章

  1. Axure原型尺寸笔记
  2. 文件上传下载流程设计
  3. [(IBUF driven by I/O terminal ) is unplaced after IO placer?
  4. C# RichTextBox 做简单的HTML代码编辑器 ---------利用WinApi修正左侧显示行号 误差
  5. 常见的NoSQL数据库
  6. please upgrade your plan to create a new private reposiory
  7. 深观察|区块链不是洪水猛兽,但要警惕以区块链之名圈钱
  8. correl函数_函数中的“豪门贵族”【统计函数】
  9. Chart.js报告
  10. 11月22日学习内容整理:bootstrap居中处理和组件,常用组件
  11. mysql存储过程开启事务_mysql的存储过程会自动开启一个事务吗?
  12. Hibernate 关于配置Mapping不成功 Unknow Entity
  13. 网页抓取软件-免费网页自动采集抓取任意内容软件
  14. django book学习笔记
  15. 微信小程序开发https设置
  16. php手机号批量分类,一个非常好的php实现手机号归属地查询接口类
  17. win7计算机怎么录屏,怎么用win7系统的电脑录屏
  18. java 刻度尺,刻度尺选择控件
  19. 软件性能测试方案怎么写?完整的性能测试报告模板分享
  20. 思维导图一定要用计算机来完成吗,思维导图为什么一定要手绘?

热门文章

  1. Linux - 安全策略命令
  2. 论文阅读《Deep Layer Aggregation(DLA)》
  3. 系统属性由于启动计算机时,win7系统开机弹出“系统属性,由于启动计算机时出现了页面文件配置问题”的解决方法...
  4. python的ols模型_pythonstatsmodels中缺少OLS回归模型的截取
  5. Ardunino——面向对象语言学习篇5——.h文件和.cpp文件(制作Arduino类库)
  6. 阿里达摩院python视频教学_阿里达摩院出品的758集的python教程,据说懂中文就能入门高清版...
  7. wx:if判断是否为空
  8. linux安装配置tinyproxy
  9. 请对未来计算机展开畅享,未来畅享人工智能论文
  10. ppt复制切片器_重磅来袭!弹出式切片器面板制作过程大揭秘 #POWER BI# No.002