今天开始了unity脚本的学习,老师第一节课就讲解四个重要的类,分别是Object类,GameObeject类,Transform类以及Component类,然后留了这样一道寻找血量最低的敌人的练习。我一开始也是蒙圈的,从来没写过脚本代码的我实在是无从下手,只好到网上寻求了大佬们的帮助,我开始有了思路并完成了这道练习,下面是我的详细步骤,大家一看就能懂。
第一步,我们假设立方体即为敌人,先建立一块平面,然后再建立5个立方体,不过这5个立方体是平面的子对象,再稍微调整一下他们的位置。
第二步,在任意文件夹里新建脚本,脚本取名为Enemy,作用主要是做个标记,在脚本里随便定义一个血量的变量,然后把它们分别贴在五个立方体上,自己随便设置一个血量大小。
第三步,再新建一个脚本, 取名为Findminblood,开始编写脚本,这个脚本就贴在plane里就行啦。
首先声明一个方法,这个方法是用来比较血量的,比较简单,就是以前学过的用for循环找出数组中最小值的方法,需要注意的是我们要面向第二步建立的Enemy类,还有数组里存储的是引用无法比较,具体化到HP就可以了,最后返回最小值就行了。
public Enemy FindMinblood(Enemy[] allenemy)
{
Enemy minblood = allenemy[0];
for (int i = 1; i < allenemy.Length; i++)
{
if (allenemy[i].HP<minblood.HP)
{
minblood = allenemy[i];
}
}
return minblood;
}
然后就是脚本的知识了,要用到Conponent类里的方法,我们可以定义一个按钮,只要点击即可查找,把血量最低的敌人用刚刚的方法计算出来,最后用Component类标记出来就行了,用法是找到组件位置进行操作设置。
public void OnGUI()
{
if (GUILayout.Button("查找"))
{
Enemy[] allenemy = Object.FindObjectsOfType<Enemy>();
Enemy enemyminblood = FindMinblood(allenemy);
enemyminblood.GetComponent<MeshRenderer>().material.color = Color.red;
}
运行结果如图
自我总结:
学习unity脚本这一节注定是条艰难的道路,因为它设计到的类的方法比较多,有些东西是需要稍微记一记的............一句话,unity手册记得多翻然后你自己多练,不去翻那本手册是学不好unity的。
最后完整查找代码奉上:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Findminblood : MonoBehaviour
{
public Enemy FindMinblood(Enemy[] allenemy)
{
Enemy minblood = allenemy[0];
for (int i = 1; i < allenemy.Length; i++)
{
if (allenemy[i].HP<minblood.HP)
{
minblood = allenemy[i];
}
}
return minblood;
}
public void OnGUI()
{
if (GUILayout.Button("查找"))
{
Enemy[] allenemy = Object.FindObjectsOfType<Enemy>();
Enemy enemyminblood = FindMinblood(allenemy);
enemyminblood.GetComponent<MeshRenderer>().material.color = Color.red;
}
}
}