Unity创建平铺网格地图的方法

本文实例为大家分享了Unity创建平铺网格地图的具体代码,供大家参考,具体内容如下

创建预制件

先拖进场景,再从层级拖回资源

选中源图像文件,设置每单位像素可以不改变组件缩放修改显示大小

脚本编辑

创建一个空对象和脚本文件

挂载脚本到空对象

双击脚本进入编辑

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class CreateMap : MonoBehaviour
{
    //私有变量暴露到编辑器
    [SerializeField]
    private GameObject tile;
 
    //获取精灵图像的宽度
    public float TileSize
    {
        get
        {
            return tile.GetComponent<SpriteRenderer>().sprite.bounds.size.x;
                    //GetComponent :用来访问对象的组件
                    //Sprite Renderer :用于渲染 [ 精灵 ] 并控制其在 2D 和 3D 项目场景中的可视化效果
                    //sprite:是一种 2D 图形对象,图形从位图图像 Texture2D 获取,主要用于精灵的图像部分,然后GameObject 上的 SpriteRenderer 组件可以使用该信息来实际显示图形
                    //Bounds:由精灵的中心和范围(采用世界空间单位)指定
        }
    }
 
    // Start is called before the first frame update
    void Start()
    {
        CreateLevel();
    }
 
    // Update is called once per frame
    void Update()
    {
        
    }
 
    private void CreateLevel()
    {
        //把屏幕左上角坐标转换为世界空间坐标
        Vector3 worldStart = Camera.main.ScreenToWorldPoint(new Vector3(0,Screen.height));
            //ScreenToWorldPoint:从屏幕空间到世界空间的变化位置。屏幕空间以像素定义。屏幕的左下为(0,0);右上是(pixelWidth,pixelHeight),Z的位置是以世界单位衡量的到相机的距离
            //Vector3 :通过转换到摄像机平面距离为 z 的屏幕空间点创建的世界空间点,这个返回值,前两个分别代表在屏幕坐标的x轴与y轴,屏幕左下角为起点(0,0),水平为x轴,竖直为y轴,这个返回值,前两个分别代表在屏幕坐标的x轴与y轴,屏幕左下角为起点(0,0),水平为x轴,竖直为y轴
            //Screen:提供对显示信息的访问。使用Screen类获取支持的屏幕分辨率列表、切换当前分辨率或隐藏或显示系统鼠标指针
            //.height:屏幕窗口的当前高度(以像素为单位)(只读)
 
        for (int y = 0; y < 6; y++)
        {
            for (int x = 0; x < 13; x++)
            {
                PlaceTile(x,y, worldStart);
            }
        }
    }
 
    private void PlaceTile(int x,int y, Vector3 worldStart)
    {
        //从左上角开始贴图
        GameObject newTile = Instantiate(tile);
        newTile.transform.position = new Vector3(worldStart.x+(TileSize * x), worldStart.y-(TileSize * y), 0);
    }
}

保存回到编辑器,拖入预制件到脚本接口

源图像的轴点位置可能需要调整

运行测试

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Unity3D选择本地图片并加载

    本文实例为大家分享了Unity3D选择本地图片并加载的具体代码,供大家参考,具体内容如下 ①找到System.Windows.Forms.dll:在unity的安装目录中找到它,如 E:\ProgramFiles(x86)\Unity\Editor\Data\Mono\lib\mono\2.0 ②设置.NET 2.0集:Untiy默认是.NET 2.0 Subset.在Edit->Project Settings->Player->OtherSettings中修改 ③任意打开一项目,新建

  • Unity制作小地图和方向导航

    一.unity方向导航制作 设计要求是方向导航随着鼠标旋转转换方向,效果图如下: 具体的实现方法主要有两个步骤,分别为UI设计和脚本编写.我的设计思路是这个控件分为两层,第一层为东西南北指示层,第二层为图标指示层,这里我的图标采用圆形图标,方向指示这里采用控制图标旋转的方式实现,层级关系如下: 首先创建父节点1,然后在父节点下创建子节点2,3:最后调整好位置. 第二步脚本编写,脚本如下: using UnityEngine; using System.Collections; using Uni

  • 一篇文章教会你用Unity制作网格地图生成组件

    目录 前言 1,创建组建出网格的基本单元 2,编辑网格创建脚本 3,地图生成案例 总结 前言 如果你玩过三国志这种类型的战旗游戏或者模拟城市.部落冲突.海岛奇兵这种模拟经营类的游戏,那么你对网格地图一定不会陌生.在这些游戏中,所有地图场景中的物体都是基于整齐的网格来记录位置等信息.如下图: 如果你还是感知不到什么是网格地图.俄罗斯方块或者贪吃蛇你一定不会陌生,物体的存在是依托于规整的网格地图而存在的. 还是一如既往,本篇文章为零基础小白文,如果你是小萌新,并且对网格地图感兴趣的话,可以学习本片文

  • Unity 使用tiledmap解析地图的详细过程

    1.先使用tiledmap编辑地图,图层用来刷图块,对象用来定义单个格子的数据 2.为每个图块调属性 3.图块需要单独配置属性的就必须创建对象,并设置值 右键设置属性 4.导出json文件 5.代码如下,详细看相应注释 using SimpleJSON; using System.Collections; using System.Collections.Generic; using UnityEngine; public class tmx : MonoBehaviour { void Sta

  • Unity创建平铺网格地图的方法

    本文实例为大家分享了Unity创建平铺网格地图的具体代码,供大家参考,具体内容如下 创建预制件 先拖进场景,再从层级拖回资源 选中源图像文件,设置每单位像素可以不改变组件缩放修改显示大小 脚本编辑 创建一个空对象和脚本文件 挂载脚本到空对象 双击脚本进入编辑 using System.Collections; using System.Collections.Generic; using UnityEngine;   public class CreateMap : MonoBehaviour

  • Unity同步/异步调用Android的方法实例

    目录 1 Unity如何使用Android插件 2 同步方法如何调用 2.1 例子1 2.2 例子2 3 异步方法如何调用 3.1 Android端 3.1.1 添加依赖 3.1.2 代码逻辑 3.2 Unity端 总结 1 Unity如何使用Android插件 很简单,把android的模块,打包成aar或者jar,放到Assets/Plugin/Android即可! 2 同步方法如何调用 2.1 例子1 Android端 假设Android有一个方法 public static String

  • Unity 数据存储和读取的方法汇总

    目录 数据场景 PlayerPrefs 序列化与反序列化 Json XML 在 Unity 中实现对游戏数据存储和读取的方法主要有这几种: 使用本地持久化类 PlayerPrefs 使用二进制的方法序列化和反序列化(Serialize / Deserialize) 使用 Json 方法 使用 XML 方法 数据场景 在 Demo 中分别使用这四种方法实现面板上数据的存储和读取 创建一个 Data 脚本用来序列化和反序列化,需要向这个类中添加需要保存的数据,最后也是需要从这个类中读取保存的数据 需

  • Unity存储游戏数据的多种方法小结

    目录 1 PlayerPrefs: Unity自带的一种简单的键值存储系统 2 ScriptableObject: Unity中最灵活的数据管理工具 2.1 如何手动创建和修改数据文件 2.2 ScriptableObject优缺点总结 3 JSON: 轻量级的数据交换格式 3.1 序列化与反序列化 3.2 用JsonUtility对对象进行序列化和反序列化 4 XML:一种可扩展标记语言 5 三者特点总结 6 数据库:存储大量数据时使用的一种方法 1.安装SQLite插件 2.创建数据库和表

  • MacOS系统下Unity启动黑屏的解决方法

    前言 Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎. 在最新版的MacOS系统上(MacOS High Sierra 10.13.1),安装Unity 5.3.5f1版本,启动直接显示黑屏,没有熟悉的打开工程.登录等界面.第一次碰到这样的画面,有点懵逼.从网上搜索解决方案,有Windows下的方法,但肯定不适用于MacOS. 无奈之下,自己定位问题并

  • 利用pixi.js制作简单的跑酷小游戏

    目录 前言 项目地址 demo地址 初始化项目 主要逻辑 useParkour useScene useHurdle Player 前言 此项目使用pixi.js和vue实现,部分素材来自爱给网,本项目仅作用于 pixi.js 学习用途,侵权立删. 项目地址 shellingfordly/pixi-games demo地址 pixi-games 初始化项目 使用vite初始化项目 pnpm create vite my-vue-app 安装pixi.js和pixi-tweener pixi-tw

  • Unity编辑器下重启的方法

    Unity编辑器下重启的方法 我们项目AssetBundle打包走的是全自动化流程,打包之前要进行各种资源检测,如果检测顺利通过,则进入打包,否则提示错误资源名称及路径,打包中断!有时候即使资源检测通过也会打包崩溃,初步断定是Unity的内存爆了,因为Unity在编辑器下打开工程中的资源不会释放掉,所以内存一直在占用,打包时要进行一系列资源依赖分析,我们也知道,如果资源量非常大时候,Unity要保存资源依赖的堆栈,所以会有内存崩掉的风险,所以我就想着,打包之前重启下Unity,让Unity释放掉

  • dos、bat批处理延时执行命令的两种方法

    来源:vbs小铺 第一种方法: ping 127.0.0.1 -n 5000>nul dir c:\ >c:\1.txt 延时5分钟后执行dir c:\ 第二种方法 :: Sleep.bat - Sleep/Delay/Wait n seconds :: Herbert Kleebauer(Germany) - 2005/05/29 :: Modified by Will Sort - 2005/06/02 @echo off echo q | debug>nul echo Bj@jzh

  • Unity实现大转盘的简单笔记

    本文实例为大家分享了Unity实现大转盘展示的具体代码,供大家参考,具体内容如下 1.unity中要实现旋转一个gameobject,我们需要改变它的transform下对应的Rotation,由于我们的大转盘是2D的视角,所以我们首先需要明确大转盘旋转的方向是旋转Rotation的Z. 2.如何实现大转盘由旋转快到慢,再到旋转指定为位置停下.查看了unity的脚本可以找到如下方法实现旋转大转盘如下: public void Rotate(Vector3 eulerAngles, Space r

随机推荐