Unity脚本:寻找血量最低的敌人

今天开始了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;
        }

    }
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值