国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【游戲開(kāi)發(fā)解答】Unity中對(duì)UGUI的Image進(jìn)行傾斜變形(UGUI | 精靈圖 | OnPopulateMesh | 頂點(diǎn)偏移 | 變形)

這篇具有很好參考價(jià)值的文章主要介紹了【游戲開(kāi)發(fā)解答】Unity中對(duì)UGUI的Image進(jìn)行傾斜變形(UGUI | 精靈圖 | OnPopulateMesh | 頂點(diǎn)偏移 | 變形)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

本文最終效果
【游戲開(kāi)發(fā)解答】Unity中對(duì)UGUI的Image進(jìn)行傾斜變形(UGUI | 精靈圖 | OnPopulateMesh | 頂點(diǎn)偏移 | 變形)

一、前言

嗨,大家好,我是新發(fā)。
前同事問(wèn)了我一個(gè)問(wèn)題,如何將UGUIImage進(jìn)行變形,變成斜斜的,
【游戲開(kāi)發(fā)解答】Unity中對(duì)UGUI的Image進(jìn)行傾斜變形(UGUI | 精靈圖 | OnPopulateMesh | 頂點(diǎn)偏移 | 變形)
最直接的就是出圖的時(shí)候直接就畫(huà)成斜的,我們不討論這種情況,這里我們單純的從技術(shù)實(shí)現(xiàn)上去思考能不能在Unity中通過(guò)UGUIImage對(duì)圖片進(jìn)行傾斜變形。
之前我寫(xiě)過(guò)一篇文章 【游戲開(kāi)發(fā)進(jìn)階】Unity網(wǎng)格探險(xiǎn)之旅(Mesh | 動(dòng)態(tài)合批 | 骨骼動(dòng)畫(huà) | 蒙皮 )
【游戲開(kāi)發(fā)解答】Unity中對(duì)UGUI的Image進(jìn)行傾斜變形(UGUI | 精靈圖 | OnPopulateMesh | 頂點(diǎn)偏移 | 變形)
文中我講過(guò)一句話(huà):

我們?cè)?code>Unity場(chǎng)景中,所有能被渲染出來(lái)的物體都會(huì)帶有網(wǎng)格,比如3D模型、粒子特效、UI、文字等等

我們的UGUI對(duì)象,也是由網(wǎng)格頂點(diǎn)、材質(zhì)、紋理等配合工作最終由GPU計(jì)算渲染出來(lái)的,我們可以在Scene視圖中選擇Wireframe模式,即可看到圖片的網(wǎng)格頂點(diǎn)了,如下
【游戲開(kāi)發(fā)解答】Unity中對(duì)UGUI的Image進(jìn)行傾斜變形(UGUI | 精靈圖 | OnPopulateMesh | 頂點(diǎn)偏移 | 變形)

我們只需要想辦法修改網(wǎng)格的頂點(diǎn)坐標(biāo)即可達(dá)到圖片傾斜的效果。
其實(shí),我在更早之前寫(xiě)過(guò)另外一篇文章:【游戲開(kāi)發(fā)實(shí)戰(zhàn)】Unity UGUI制作雷達(dá)圖/天賦圖/屬性圖/能力圖,因?yàn)樘峦淳腿c(diǎn)了防御力
文中我講了UGUI實(shí)現(xiàn)雷達(dá)圖的原理與具體實(shí)現(xiàn)方法
【游戲開(kāi)發(fā)解答】Unity中對(duì)UGUI的Image進(jìn)行傾斜變形(UGUI | 精靈圖 | OnPopulateMesh | 頂點(diǎn)偏移 | 變形)老粉應(yīng)該看過(guò)我這邊文章,里面我講過(guò)這么一段話(huà):
UGUI中,不管是RawImage、Image還是Text,它們都是繼承MaskableGraphic的,而MaskableGraphic又是繼承Graphic的,在Graphic中有個(gè)OnPopulateMesh方法。

protected virtual void OnPopulateMesh(VertexHelper toFill);

參數(shù)是VertexHelper,我們可以通過(guò)VertexHelper來(lái)獲取頂點(diǎn)信息并操作頂點(diǎn)(修改頂點(diǎn)或者插入新的頂點(diǎn)等)。
我們可以去override這個(gè)OnPopulateMesh方法,實(shí)現(xiàn)我們自己想要的效果,下面我就來(lái)講下具體操作吧~

二、繼承Image,重寫(xiě)OnPopulateMesh方法

我們創(chuàng)建一個(gè)ShapeImage腳本,
【游戲開(kāi)發(fā)解答】Unity中對(duì)UGUI的Image進(jìn)行傾斜變形(UGUI | 精靈圖 | OnPopulateMesh | 頂點(diǎn)偏移 | 變形)
讓它繼承Image,重寫(xiě)OnPopulateMesh方法,

using UnityEngine.UI;

public class ShapeImage : Image
{
    protected override void OnPopulateMesh(VertexHelper toFill)
    {
        base.OnPopulateMesh(toFill);
        // TODO 頂點(diǎn)偏移
    }
}

一張精靈圖,是由四個(gè)頂?shù)捉M成的,頂點(diǎn)順序是這樣的,
【游戲開(kāi)發(fā)解答】Unity中對(duì)UGUI的Image進(jìn)行傾斜變形(UGUI | 精靈圖 | OnPopulateMesh | 頂點(diǎn)偏移 | 變形)

我們可以對(duì)12兩個(gè)頂點(diǎn)做一個(gè)橫向的坐標(biāo)偏移,即可達(dá)到圖像傾斜的效果,
獲取頂點(diǎn)我們可以通過(guò)PopulateUIVertex方法來(lái)獲得,例:

// 頂點(diǎn)索引
int index = 1;
UIVertex vertex = new UIVertex();
toFill.PopulateUIVertex(ref vertex, index);

接著我們可以對(duì)頂點(diǎn)坐標(biāo)做一個(gè)偏移

// 偏移
float offset = 3f;
vertex.position += Vector3.right * offset;

最后重新把頂點(diǎn)數(shù)據(jù)塞回給VertexHelper對(duì)象,如下:

toFill.SetUIVertex(vertex, index);

完整代碼如下:

using UnityEngine;
using UnityEngine.UI;

public class ShapeImage : Image
{
    // 傾斜偏移
    public float offset;

    protected override void OnPopulateMesh(VertexHelper toFill)
    {
        base.OnPopulateMesh(toFill);

        UIVertex vertex = new UIVertex();
        toFill.PopulateUIVertex(ref vertex, 1);
        vertex.position += Vector3.right * offset;
        toFill.SetUIVertex(vertex, 1);

        vertex = new UIVertex();
        toFill.PopulateUIVertex(ref vertex, 2);
        vertex.position += Vector3.right * offset;
        toFill.SetUIVertex(vertex, 2);
    }
}

三、掛ShapeImage腳本

我們?cè)?code>Canvas節(jié)點(diǎn)下創(chuàng)建一個(gè)空物體,重命名為ShapeImage,如下
【游戲開(kāi)發(fā)解答】Unity中對(duì)UGUI的Image進(jìn)行傾斜變形(UGUI | 精靈圖 | OnPopulateMesh | 頂點(diǎn)偏移 | 變形)
給它掛上ShapeImage腳本,并設(shè)置Source Image成員為精靈圖片資源,如下
【游戲開(kāi)發(fā)解答】Unity中對(duì)UGUI的Image進(jìn)行傾斜變形(UGUI | 精靈圖 | OnPopulateMesh | 頂點(diǎn)偏移 | 變形)
此時(shí)我們發(fā)現(xiàn)在Inspector窗口中并沒(méi)有顯示offset參數(shù),不像我們普通的Monobehaviour腳本那樣聲明了public成員對(duì)象就會(huì)自動(dòng)顯示到Inspector面包中,此時(shí)我們需要重寫(xiě)ImageEditor。

四、ShapeImageEditor編輯器腳本

我們?cè)?code>Editor目錄中創(chuàng)建一個(gè)ShapeImageEditor腳本,如下
【游戲開(kāi)發(fā)解答】Unity中對(duì)UGUI的Image進(jìn)行傾斜變形(UGUI | 精靈圖 | OnPopulateMesh | 頂點(diǎn)偏移 | 變形)
代碼如下

using UnityEditor;
using UnityEditor.UI;
using UnityEngine;

[CustomEditor(typeof(ShapeImage), true)]
public class ShapeImageEditor : ImageEditor
{
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        ShapeImage image = (ShapeImage)target;
        SerializedProperty sp = serializedObject.FindProperty("offset");
        EditorGUILayout.PropertyField(sp, new GUIContent("offset 傾斜偏移"));
        serializedObject.ApplyModifiedProperties();
    }
}

此時(shí)我們就可以在Inspector窗口中看到offset參數(shù)了,
【游戲開(kāi)發(fā)解答】Unity中對(duì)UGUI的Image進(jìn)行傾斜變形(UGUI | 精靈圖 | OnPopulateMesh | 頂點(diǎn)偏移 | 變形)

五、測(cè)試

我們調(diào)節(jié)offset參數(shù),可以看到圖片實(shí)現(xiàn)傾斜效果啦~
【游戲開(kāi)發(fā)解答】Unity中對(duì)UGUI的Image進(jìn)行傾斜變形(UGUI | 精靈圖 | OnPopulateMesh | 頂點(diǎn)偏移 | 變形)收工~
我是新發(fā),https://blog.csdn.net/linxinfa
一個(gè)在小公司默默奮斗的Unity開(kāi)發(fā)者,希望可以幫助更多想學(xué)Unity的人,共勉~文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-441124.html

到了這里,關(guān)于【游戲開(kāi)發(fā)解答】Unity中對(duì)UGUI的Image進(jìn)行傾斜變形(UGUI | 精靈圖 | OnPopulateMesh | 頂點(diǎn)偏移 | 變形)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Unity UGUI使用Text組件位圖字體進(jìn)行自適應(yīng)大小

    Unity UGUI使用Text組件位圖字體進(jìn)行自適應(yīng)大小

    1.首先我們需要把位圖字體導(dǎo)入到unity中,然后利用插件轉(zhuǎn)化一下 我使用的是BMFont 2.然后我們就可以看到生成了四個(gè)文件,其中我們主要注意的是.fontsettings文件, 我們主要修改的就是?Character Rect里面的各個(gè)參數(shù),至于具體是什么 ,大家有興趣的可以去搜索, 好了 我們直接上代碼 把

    2024年02月05日
    瀏覽(35)
  • 【微信開(kāi)發(fā)】小程序this.setData({})中對(duì)普通字段、數(shù)組以及數(shù)組對(duì)象進(jìn)行賦值,對(duì)數(shù)組對(duì)象進(jìn)行操作

    【微信開(kāi)發(fā)】小程序this.setData({})中對(duì)普通字段、數(shù)組以及數(shù)組對(duì)象進(jìn)行賦值,對(duì)數(shù)組對(duì)象進(jìn)行操作

    前言: ????????之最近在開(kāi)發(fā)一個(gè)系統(tǒng)的時(shí)候,this.setData總有時(shí)候會(huì)出問(wèn)題,查了查資料,一下進(jìn)行總結(jié): 字段賦值; 數(shù)組靜態(tài)賦值; 數(shù)組動(dòng)態(tài)賦值; 對(duì)象數(shù)組動(dòng)態(tài)賦值; 組對(duì)象進(jìn)行操作 ? ? ? ? ① 末位加數(shù)據(jù); ? ? ? ? ② 中間或者開(kāi)頭加數(shù)據(jù); ? ? ? ? ③?刪除

    2024年02月08日
    瀏覽(20)
  • Unity游戲開(kāi)發(fā)之游戲動(dòng)畫(huà)(Unity動(dòng)畫(huà)系統(tǒng))

    Unity游戲開(kāi)發(fā)之游戲動(dòng)畫(huà)(Unity動(dòng)畫(huà)系統(tǒng))

    Unity動(dòng)畫(huà)系統(tǒng)分為 動(dòng)畫(huà)片段 Animation Clip: 動(dòng)畫(huà)資源,與模型無(wú)關(guān) 動(dòng)畫(huà)狀態(tài)機(jī) Animator Controller:幫助我們跟蹤當(dāng)前動(dòng)畫(huà)的播放狀態(tài),并且根據(jù)設(shè)置覺(jué)得如何切換動(dòng)畫(huà)片段 動(dòng)畫(huà)組件 Animator Component:玩家角色需要播放動(dòng)畫(huà)功能時(shí),需要?jiǎng)赢?huà)組件,將游戲?qū)ο笮枰膭?dòng)畫(huà)狀態(tài)機(jī)(以

    2024年02月13日
    瀏覽(57)
  • Vue中如何進(jìn)行游戲開(kāi)發(fā)與游戲引擎集成?

    Vue中如何進(jìn)行游戲開(kāi)發(fā)與游戲引擎集成?

    Vue.js是一款流行的JavaScript框架,它的MVVM模式和組件化開(kāi)發(fā)思想非常適合構(gòu)建Web應(yīng)用程序。但是,如果我們想要開(kāi)發(fā)Web游戲,Vue.js并不是最合適的選擇。在本文中,我們將介紹如何在Vue.js中進(jìn)行游戲開(kāi)發(fā),并集成一些流行的游戲引擎。 在閱讀本文之前,你需要掌握以下技能:

    2024年02月11日
    瀏覽(26)
  • Unity游戲開(kāi)發(fā)之游戲存檔方式

    Unity游戲開(kāi)發(fā)之游戲存檔方式

    目錄 1.Unity自帶存儲(chǔ)方式PlayerPrefs 2.XML存儲(chǔ)方式 3.Json類(lèi)型存儲(chǔ)方式 1.Unity的序列化問(wèn)題 2.Unity中支持序列化的類(lèi) 3.Unity中Json的使用方法 ?4.SQLite 1.SQLite的一些基礎(chǔ)(簡(jiǎn)單介紹,不會(huì)深入講解) 2.在Unity中使用SQLite 3.SQLite的優(yōu)劣 結(jié)語(yǔ) ? ? ? ? 屬于unity自帶的數(shù)據(jù)存儲(chǔ)方法,其形式

    2024年02月06日
    瀏覽(22)
  • 【Unity 框架】QFramework v1.0 使用指南 工具篇:05. ResKit 資源管理&開(kāi)發(fā)解決方案 | Unity 游戲框架 | Unity 游戲開(kāi)發(fā) | Unity 獨(dú)立游戲

    【Unity 框架】QFramework v1.0 使用指南 工具篇:05. ResKit 資源管理&開(kāi)發(fā)解決方案 | Unity 游戲框架 | Unity 游戲開(kāi)發(fā) | Unity 獨(dú)立游戲

    Res Kit,是資源管理快速開(kāi)發(fā)解決方案 特性如下: 可以使用一個(gè) API 從 dataPath、Resources、StreammingAssetPath、PersistentDataPath、網(wǎng)絡(luò)等地方加載資源。 基于引用計(jì)數(shù),簡(jiǎn)化資源加載和卸載。 擁抱游戲開(kāi)發(fā)流程中的不同階段 開(kāi)發(fā)階段不用打 AB 直接從 dataPath 加載。 測(cè)試階段支持只需打

    2024年02月01日
    瀏覽(58)
  • Pandas中對(duì)DataFrame列名進(jìn)行重命名

    目錄 1.重命名Pandas DataFrame Column(列) 2.在創(chuàng)建Dataframe時(shí)指定列名 3.※使用 list 設(shè)置全部列名※ Pandas是一個(gè)用于數(shù)據(jù)分析和操作的Python庫(kù)。在 pandas 中幾乎所有的操作都圍繞著 DataFrame 。 Dataframe 是一個(gè)二維表的抽象表示,可以包含各種數(shù)據(jù)。 背景:只想重命名幾列,最好在創(chuàng)

    2023年04月18日
    瀏覽(32)
  • 在 Python 中對(duì)日期和時(shí)間進(jìn)行排序

    在 Python 中對(duì)日期和時(shí)間進(jìn)行排序

    Python 是全世界程序員都在使用的一種高級(jí)解釋型編程語(yǔ)言。 它最著名的是面向?qū)ο缶幊獭?我們可以在與人工智能、機(jī)器學(xué)習(xí)、Web 開(kāi)發(fā)和數(shù)據(jù)分析相關(guān)的不同 IT 領(lǐng)域使用 Python。 Python 流行和實(shí)用的另一個(gè)原因是它有許多內(nèi)置的庫(kù)和模塊。 本文將教我們?nèi)绾问褂?Python 對(duì)日期

    2024年02月07日
    瀏覽(19)
  • 【Unity小游戲】游戲開(kāi)發(fā)案例-Unity打造暢玩無(wú)阻的小游戲(上)

    【Unity小游戲】游戲開(kāi)發(fā)案例-Unity打造暢玩無(wú)阻的小游戲(上)

    乒乓克隆 使用立方體建造競(jìng)技場(chǎng)、球拍和球。 移動(dòng)球和球拍。 擊球并得分。 讓相機(jī)感受到?jīng)_擊力。 給游戲一個(gè)抽象的霓虹燈外觀。 這是有關(guān)基礎(chǔ)游戲的系列教程中的第一個(gè)教程。在其中,我們將創(chuàng)建一個(gè)簡(jiǎn)單的 Pong 克隆。 本教程是使用 Unity 2021.3.16f1 制作的。 本系列將涵

    2024年02月13日
    瀏覽(27)
  • UGUI基礎(chǔ)游戲?qū)ο驝anvas

    UGUI基礎(chǔ)游戲?qū)ο驝anvas

    ? 畫(huà)布是一種帶有畫(huà)布組件的游戲?qū)ο?,所?UI 元素都必須是此類(lèi)畫(huà)布的子項(xiàng)。 創(chuàng)建新的 UI 元素(如使用菜單? GameObject UI Image ?創(chuàng)建圖像)時(shí),如果場(chǎng)景中還沒(méi)有畫(huà)布,則會(huì)自動(dòng)創(chuàng)建畫(huà)布。UI 元素將創(chuàng)建為此畫(huà)布的子項(xiàng)。 畫(huà)布區(qū)域在 Scene 視圖中顯示為矩形。這樣可以輕松

    2024年02月13日
    瀏覽(14)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包