Unity創(chuàng)建平鋪網(wǎng)格地圖的方法
更新時間:2022年07月22日 17:06:47 作者:不可_收_圾
這篇文章主要為大家詳細介紹了Unity創(chuàng)建平鋪網(wǎng)格地圖的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了Unity創(chuàng)建平鋪網(wǎng)格地圖的具體代碼,供大家參考,具體內(nèi)容如下
創(chuàng)建預制件
先拖進場景,再從層級拖回資源

選中源圖像文件,設(shè)置每單位像素可以不改變組件縮放修改顯示大小

腳本編輯
創(chuàng)建一個空對象和腳本文件


掛載腳本到空對象

雙擊腳本進入編輯
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()
? ? {
? ? ? ? //把屏幕左上角坐標轉(zhuǎn)換為世界空間坐標
? ? ? ? Vector3 worldStart = Camera.main.ScreenToWorldPoint(new Vector3(0,Screen.height));
?? ??? ??? ?//ScreenToWorldPoint:從屏幕空間到世界空間的變化位置。屏幕空間以像素定義。屏幕的左下為(0,0);右上是(pixelWidth,pixelHeight),Z的位置是以世界單位衡量的到相機的距離
?? ??? ??? ?//Vector3 :通過轉(zhuǎn)換到攝像機平面距離為 z 的屏幕空間點創(chuàng)建的世界空間點,這個返回值,前兩個分別代表在屏幕坐標的x軸與y軸,屏幕左下角為起點(0,0),水平為x軸,豎直為y軸,這個返回值,前兩個分別代表在屏幕坐標的x軸與y軸,屏幕左下角為起點(0,0),水平為x軸,豎直為y軸
?? ??? ??? ?//Screen:提供對顯示信息的訪問。使用Screen類獲取支持的屏幕分辨率列表、切換當前分辨率或隱藏或顯示系統(tǒng)鼠標指針
?? ??? ??? ?//.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);
? ? }
}保存回到編輯器,拖入預制件到腳本接口

源圖像的軸點位置可能需要調(diào)整

運行測試

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
CAD2008+VS2008開發(fā)ObjectARX加載失敗問題(推薦)
這篇文章主要介紹了CAD2008+VS2008開發(fā)ObjectARX加載失敗問題,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04
C#值類型、引用類型中的Equals和==的區(qū)別淺析
這篇文章主要介紹了C#值類型、引用類型中的Equals和==的區(qū)別淺析,本文分別對C#值類型和引用類型中的Equals和==做了講解和給出了實例,需要的朋友可以參考下2015-01-01

