Unity創(chuàng)建平鋪網(wǎng)格地圖的方法
本文實(shí)例為大家分享了Unity創(chuàng)建平鋪網(wǎng)格地圖的具體代碼,供大家參考,具體內(nèi)容如下
創(chuàng)建預(yù)制件
先拖進(jìn)場(chǎng)景,再?gòu)膶蛹?jí)拖回資源
選中源圖像文件,設(shè)置每單位像素可以不改變組件縮放修改顯示大小
腳本編輯
創(chuàng)建一個(gè)空對(duì)象和腳本文件
掛載腳本到空對(duì)象
雙擊腳本進(jìn)入編輯
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 :用來(lái)訪問(wèn)對(duì)象的組件 ?? ??? ??? ??? ??? ?//Sprite Renderer :用于渲染 [ 精靈 ] 并控制其在 2D 和 3D 項(xiàng)目場(chǎng)景中的可視化效果 ?? ??? ??? ??? ??? ?//sprite:是一種 2D 圖形對(duì)象,圖形從位圖圖像 Texture2D 獲取,主要用于精靈的圖像部分,然后GameObject 上的 SpriteRenderer 組件可以使用該信息來(lái)實(shí)際顯示圖形 ?? ??? ??? ??? ??? ?//Bounds:由精靈的中心和范圍(采用世界空間單位)指定 ? ? ? ? } ? ? } ? ? ? // Start is called before the first frame update ? ? void Start() ? ? { ? ? ? ? CreateLevel(); ? ? } ? ? ? // Update is called once per frame ? ? void Update() ? ? { ? ? ? ?? ? ? } ? ? ? private void CreateLevel() ? ? { ? ? ? ? //把屏幕左上角坐標(biāo)轉(zhuǎn)換為世界空間坐標(biāo) ? ? ? ? Vector3 worldStart = Camera.main.ScreenToWorldPoint(new Vector3(0,Screen.height)); ?? ??? ??? ?//ScreenToWorldPoint:從屏幕空間到世界空間的變化位置。屏幕空間以像素定義。屏幕的左下為(0,0);右上是(pixelWidth,pixelHeight),Z的位置是以世界單位衡量的到相機(jī)的距離 ?? ??? ??? ?//Vector3 :通過(guò)轉(zhuǎn)換到攝像機(jī)平面距離為 z 的屏幕空間點(diǎn)創(chuàng)建的世界空間點(diǎn),這個(gè)返回值,前兩個(gè)分別代表在屏幕坐標(biāo)的x軸與y軸,屏幕左下角為起點(diǎn)(0,0),水平為x軸,豎直為y軸,這個(gè)返回值,前兩個(gè)分別代表在屏幕坐標(biāo)的x軸與y軸,屏幕左下角為起點(diǎn)(0,0),水平為x軸,豎直為y軸 ?? ??? ??? ?//Screen:提供對(duì)顯示信息的訪問(wèn)。使用Screen類獲取支持的屏幕分辨率列表、切換當(dāng)前分辨率或隱藏或顯示系統(tǒng)鼠標(biāo)指針 ?? ??? ??? ?//.height:屏幕窗口的當(dāng)前高度(以像素為單位)(只讀) ? ? ? ? ? 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); ? ? } }
保存回到編輯器,拖入預(yù)制件到腳本接口
源圖像的軸點(diǎn)位置可能需要調(diào)整
運(yùn)行測(cè)試
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#中Dictionary泛型集合7種常見(jiàn)的用法
本文主要介紹了Dictionary集合的7種最基礎(chǔ)的用法,包括創(chuàng)建、添加、查找、遍歷、刪除等方法,程序都是由簡(jiǎn)入繁,希望能通過(guò)閱讀簡(jiǎn)單的示例,給大家一些啟發(fā)。2016-03-03WPF實(shí)現(xiàn)頁(yè)面的切換的示例代碼
本文主要介紹了WPF實(shí)現(xiàn)頁(yè)面的切換的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01C#操作Access數(shù)據(jù)庫(kù)的實(shí)現(xiàn)過(guò)程(vs2019)
這篇文章主要介紹了C#操作Access數(shù)據(jù)庫(kù)的實(shí)現(xiàn)過(guò)程(vs2019),打開Office Access新建一個(gè)空白數(shù)據(jù)庫(kù)DATA.accdb,并改好存放位置,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-02-02使用位運(yùn)算實(shí)現(xiàn)網(wǎng)頁(yè)中的過(guò)濾、篩選功能實(shí)例
這篇文章主要介紹了使用位運(yùn)算實(shí)現(xiàn)網(wǎng)頁(yè)中的過(guò)濾、篩選功能實(shí)例,一個(gè)比常規(guī)拼接SQL字符串更有新意的一個(gè)解決思路,需要的朋友可以參考下2014-07-07C#中后臺(tái)post請(qǐng)求常用的兩種方式總結(jié)
這篇文章主要介紹了C#中后臺(tái)post請(qǐng)求常用的兩種方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06