unity小功能实现(达成条件后消除障碍物)

编程入门 行业动态 更新时间:2024-10-23 04:38:15

unity小功能实现(达成条件后消除<a href=https://www.elefans.com/category/jswz/34/1722305.html style=障碍物)"/>

unity小功能实现(达成条件后消除障碍物)


前言

因为做的小demo是以经典2D教程Ruby为原型的,射击打怪类的游戏,所以设计关卡的时候想到了一个,在一个场景中,击杀掉全部的怪物,就可以打开去下一个场景的门,或者说有个障碍物挡在必经之路上,你需要集齐几个碎片,障碍物就会自动消失。


我的这个demo需要的是,在一个场景中,消灭所有怪,障碍物就自动销毁,所以我的思路最开始是:
1.障碍物绑上代码,public出那几个怪,然后放进去,update里面反复判断这些怪是否被消灭(也就是==null)
2.如果全部被消灭,就destroy掉这个障碍物
我觉得思路没问题,但是不具有普遍性,下一关如果也要消灭完怪物再消除障碍物,消灭的怪物种类数量不一样,那又得重新定代码。
所以我又想了一下,既然是把怪物都消灭,就消除障碍物,那就把所有怪物都统一放在一个数据结构中,当这个数据结构空了,也就是怪物全消灭了,那就销毁障碍物。

所以我选择定义一个列表list,对于怪物,我觉得它们的共性就是都是gameobject,而且定义gameobject的话就可以不只是怪物,如果是别的物体,哪怕被捡起来(也是一种销毁)也可以进行判断,总之只要这个list最后空了,那就消灭障碍物。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 控制障碍物的销毁
/// GOlist里面就是销毁障碍物前需要摧毁的所有物件 不一定是同一类型
/// </summary>
public class ObstacleControl : MonoBehaviour
{public List<GameObject> GOlist = new List<GameObject>();private bool isDestroy;//障碍物损毁了吗void Start(){isDestroy = false;}void Update(){if (isDestroy) return;foreach(GameObject i in GOlist){if (i != null){return;}}//如果这些怪被消灭了 那就解除障碍物Destroy(this.gameObject);isDestroy = true;}
}

在unity界面只需要设置列表的大小,也就是你要销毁障碍物前需要消灭的怪物数量
然后把那些怪都丢进来就行了。


这个是之前到处查都没有找到方法,于是自己摸索的一种方法,如果有更好的方法欢迎指正,或者有游戏开发的一些问题可以一起讨论!

更多推荐

unity小功能实现(达成条件后消除障碍物)

本文发布于:2024-02-24 18:57:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1696342.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:障碍物   条件   功能   unity

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!