【2d游戏开发】实现不同时间季节变换不同的地图

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 【2d游戏开发】实现不同时间季节变换不同的地图,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

前言

接上一个文章,本次教程需要在上个时间系统的基础上进行实现。
同样,因写了很多遍教程,这里只列出关键地方,具体的教程请去b站搜索我的2d游戏开发-unity实现系列的视频。

实现说明

在时间系统实现后,本次文章实现当时间在不同季节的时候显示不同的地图

前提条件

在正式实现之前,当然需要准备4个不同季节的地图

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

怎么制作该地图不多赘述,有兴趣请搜索b站我的视频教程

具体逻辑

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class mapControllByPrefabs : MonoBehaviour
{
    // 春季地图预制体
    public GameObject springMap;
    // 夏季地图预制体
    public GameObject summerMap;
    // 秋季
    public GameObject fallMap;
    // 冬季
    public GameObject winterMap;
    // 获取时间组件
    public GameObject timeSystem;

    

    // 
    private GameObject isSpring;
    //
    private GameObject isSummer;
    //
    private GameObject isFall;
    // 
    private GameObject isWinter;

    private void Start()
    {
        


    }
    // Update is called once per frame
    void Update()
    {
        ChangeMap();
    }

    // 根据不同的季节切换地图
    void ChangeMap() {

        TimeSystemContoller timeSystemContoller = timeSystem.GetComponent<TimeSystemContoller>();
        // 获取到预制体,然后才能够使用代码去加载预制体到场景
        springMap = Resources.Load<GameObject>("Prefabs/map/spring");
        summerMap = Resources.Load<GameObject>("Prefabs/map/summer");
        fallMap = Resources.Load<GameObject>("Prefabs/map/fall");
        winterMap = Resources.Load<GameObject>("Prefabs/map/winter");

        // 获取场景有没有加载预制体到场景里
        isSpring = GameObject.FindGameObjectWithTag("springMap");

        isSummer = GameObject.FindGameObjectWithTag("summerMap");

        isFall = GameObject.FindGameObjectWithTag("fallMap");

        isWinter = GameObject.FindGameObjectWithTag("winterMap");
        // 春季
        if (timeSystemContoller.seasonTime == 1) {
            
            // 销毁冬季地图
            if (isWinter) {
                Destroy(isWinter);
            }
            // 判断说预制体有没有加载到地图
            if (!isSpring) {
                // 如果不存在
                Instantiate(springMap);
            }
        }
        // 夏季
        if (timeSystemContoller.seasonTime == 2) {
            // 夏季销毁的是春季的地图
            if (isSpring) {
                Destroy(isSpring);
            }
            if (!isSummer)
            {
                Instantiate(summerMap);
            }

        }

        // 秋季
        if (timeSystemContoller.seasonTime == 3)
        {
            //销毁夏季的地图
            if (isSummer)
            {
                Destroy(isSummer);
            }
            // 创建秋季地图
            if (!isFall)
            {
                Instantiate(fallMap);
            }
        }

        // 冬季
        if (timeSystemContoller.seasonTime == 4)
        {
            //销毁秋季的地图
            if (isFall)
            {
                Destroy(isFall);
            }
            // 创建冬季地图
            if (!isWinter)
            {
                Instantiate(winterMap);
            }
        }
    }
}

结语

同样,我写这个的目的只是为了备注以下,防止遗漏;所以详细的教学并没有写出来,如果有需要,搜索我出的b站教程就可以

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/136679.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!