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

前言

接上一个文章,本次教程需要在上个时间系统的基础上进行实现。
同样,因写了很多遍教程,这里只列出关键地方,具体的教程请去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站教程就可以

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值