Unity塔防游戏学习(一)

这篇博客介绍了如何在Unity中搭建一个塔防游戏的场景,包括格子编辑和场景设计。首先,详细阐述了格子数据的创建,如GUARD、ROAD和DEAD格子,接着在1.1部分描述了如何创建Grid Object并绑定TileObject.cs脚本。在1.2部分,为了改进编辑体验,扩展了编辑器,实现了TileEditor.cs。然后,转向场景设计,创建新的Layer,调整Plane的属性,并进行地图编辑,分别标记为Road、Dead和GUARD位置。
摘要由CSDN通过智能技术生成

场景搭建

该场景由一个二维的单元格组成。每一个格子的用途都不同。

  • GUARD 专用于摆放防守单位的格子
  • ROAD 专用于敌人通过的格子
  • DEAD 既无法摆放防守单位,也无法让敌人通过的格子

1、格子编辑

1.1、格子数据

1、在Hierarchy视图中创建一个空物体,取名为Grid Object。
在这里插入图片描述
2、创建脚本TileObject.cs,这个类主要用于保存地图格子的数据。这个脚本和Grid Object绑定。
在这里插入图片描述
3、TileObject.cs的代码为。

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

public class TileObject : MonoBehaviour
{
   
    public static TileObject instance = null;   //实例

    //tile碰撞层,用于检测鼠标点击单元格时检测碰撞
    public LayerMask m_tileLayer;
    //地图的x轴单元格个数以及z轴单元格个数
    public int m_xTileCount = 3;
    public int m_zTileCount = 3;
    //单元格的大小
    public float m_tileSize = 1;
    //一维数组,用于存放单元格的数据
    public int[] m_data;

    //不用显示在Inspector视图上

    [HideInInspector]
    //当前数据ID
    public int m_dataId = 0;

    [HideInInspector]
    //是否显示数据信息
    public bool m_isDebug = true;

    private void Awake()
    {
   
        instance = this;
    }

    public void Reset()
    {
   
        //每次reset后需要初始化data的数据
        m_data = new int[m_xTileCount * m_zTileCount];
    }

    //获取单元格的下标
    public int getDataIndex(float xpos, float zpos)
    {
   
        return (int)((xpos - transform.position.x) / m_tileSize) * m_zTileCount + (int)((zpos - transform.position.z) / m_tileSize);
    }
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值