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

【Unity】工具類系列——UI劉海屏適配

這篇具有很好參考價值的文章主要介紹了【Unity】工具類系列——UI劉海屏適配。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

劉海屏適配
項(xiàng)目上線了總免不了適配問題,
注:該方案支持熱更適配,哪怕是上線項(xiàng)目也可以及時開啟適配及調(diào)整適配程度。
原理:
通過獲取設(shè)備型號及計(jì)算屏幕分辨率,在根據(jù)是否劉海屏調(diào)整側(cè)邊按鈕的 Anchored Position 偏移量,從而避過劉海遮擋。


```csharp
using System;
using System.Collections;
using System.Collections.Generic;
using Sirenix.OdinInspector;
#if UNITY_EDITOR
using Sirenix.Utilities.Editor;
using UnityEditor;
#endif
using UnityEngine;

[ExecuteAlways]
public class UI_NotchAdapter : MonoBehaviour
{
    public enum AdapterType
    {
        ePosY_Minus_AdaptY,
        eOffsetMaxY_Minus_AdaptY,
        eSizeDeltaY_Set_AdaptY,
        eSizeDeltaY_Minus_AdaptY,
    }

    [System.Serializable]
    public class UI_NA_Data
    {
        [LabelText("需要適配的UI對象")]
        public RectTransform mRectTransform_;
        [LabelText("適配方式")]
        public AdapterType mAdapterType_;
    }
    [ListDrawerSettings(ShowIndexLabels = true, Expanded = true), LabelText("屏幕適配數(shù)據(jù)"), ShowInInspector]
    public List<UI_NA_Data> mAdaptDatas_ = new List<UI_NA_Data>();

    private void Awake()
    {
    }

    private void OnDestroy()
    {

    }


 
    void DoAdapterLogic(bool preview = false)
    {
        if (mAdaptDatas_ != null)
        {
            for (var i = 0; i < mAdaptDatas_.Count; ++i)
            {
                var data = mAdaptDatas_[i];
                if (data != null)
                {
                    GameManager gm = null;
                    if (!preview)
                        gm = GameManager.Instance;
                    switch (data.mAdapterType_)
                    {
                        case AdapterType.ePosY_Minus_AdaptY:
                            {
                                if (data.mRectTransform_ != null)
                                {
                                    var mPos = data.mRectTransform_.transform.localPosition;               
                                    data.mRectTransform_.transform.localPosition = new Vector3(mPos.x, mPos.y - gm.MNotchAdaptY_, mPos.z);
                                }
                            }
                            break;
                        case AdapterType.eSizeDeltaY_Minus_AdaptY:
                            {
                                if (data.mRectTransform_ != null)
                                {
                                    var rSize = data.mRectTransform_.sizeDelta;
                                        data.mRectTransform_.sizeDelta = new Vector2(rSize.x, rSize.y - gm.MNotchAdaptY_);

                                }
                            }
                            break;
                        case AdapterType.eSizeDeltaY_Set_AdaptY:
                            {
                                if (data.mRectTransform_ != null)
                                {
                                    var rSize = data.mRectTransform_.sizeDelta;
                                        data.mRectTransform_.sizeDelta = new Vector2(rSize.x, gm.MNotchAdaptY_);

                                }
                            }
                            break;
                        case AdapterType.eOffsetMaxY_Minus_AdaptY:
                            {
                                if (data.mRectTransform_ != null)
                                {
                                    var rectTop = data.mRectTransform_.offsetMax.y;
                                    var rectRight = data.mRectTransform_.offsetMax.x;
                                        data.mRectTransform_.offsetMax = new Vector2(rectRight, rectTop - gm.MNotchAdaptY_);

                                }
                            }
                            break;
                    }
                }
            }
        }
    }
    // Start is called before the first frame update
    void Start()
    {
        if (Application.isPlaying)
        {
             DoAdapterLogic();
        }
    }
}

將該代碼掛到需要調(diào)整的適配的ui上,需要注意的是gm.MNotchAdaptY_是劉海屏的高度,需要自己設(shè)置更換。
使用如下:unity sirenix,木棉-小健學(xué)習(xí),ui,unity,游戲引擎
拖動對應(yīng)的對象,選好適配方式即可文章來源地址http://www.zghlxwxcb.cn/news/detail-532092.html


到了這里,關(guān)于【Unity】工具類系列——UI劉海屏適配的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Unity - UI適配方案記錄

    Unity - UI適配方案記錄

    1.背景圖 界面背景圖建議至少寬于21:9;其中16:9的范圍為精細(xì)范圍,12:9的范圍為真機(jī)最小可見范圍。 2.組件 各組件通過設(shè)置RectTransform屬性來達(dá)到正確適配的效果。 3.預(yù)覽 在unity中,設(shè)置Game窗口左上角的分辨率即可預(yù)覽效果。注意:最終效果需以真機(jī)測試為準(zhǔn)。 在所有需要縮

    2024年02月06日
    瀏覽(25)
  • Unity UI適配規(guī)則和對熱門游戲適配策略的拆解

    Unity UI適配規(guī)則和對熱門游戲適配策略的拆解

    本文會介紹一些關(guān)于UI適配的基礎(chǔ)概念,并且統(tǒng)計(jì)了市面上常見的設(shè)備的分辨率的情況。同時通過拆解目前市面上較為成功的兩款休閑游戲Royal Match和Monopoly GO(兩款均為近期游戲付費(fèi)榜前幾的游戲),大致推斷出他們的適配策略,以供學(xué)習(xí)和參考。 設(shè)計(jì)分辨率: 設(shè)計(jì)分辨率是指

    2024年03月14日
    瀏覽(27)
  • 【Unity小技巧】最簡單的UI設(shè)置適配方案

    這期來講一個簡單的UI設(shè)計(jì)方案,很多同學(xué)可能搞不懂錨點(diǎn)、軸心這些概念,導(dǎo)致做好的UI在別人的設(shè)備上,亂跑或者是重疊,或者是參加游戲老發(fā)時間比較緊來不及做適配,都可以來試試這個方法,通過填充邊框來保持游戲畫面的原始比例,所以它的缺點(diǎn)也很明顯,在一些移

    2024年02月04日
    瀏覽(37)
  • 第四十九章 Unity UI適配器組件

    第四十九章 Unity UI適配器組件

    首先,我們介紹內(nèi)容大小適配器 (Content Size Fitter)組件。 我們新建一個“SampleScene6.unity”場景,然后添加一個Text UI元素,讓其居中顯示,并且尺寸設(shè)置為50*30。 ? 由于我們設(shè)置Text的尺寸在水平方向上面太小,也就是Width值太小,里面的內(nèi)容“New Text”無法全部顯示。當(dāng)然,我

    2024年02月04日
    瀏覽(25)
  • 【Unity小技巧】最簡單的UI設(shè)置適配方案,萌新必看

    這期來講一個簡單的UI設(shè)計(jì)方案,很多同學(xué)可能搞不懂錨點(diǎn)、軸心這些概念,導(dǎo)致做好的UI在別人的設(shè)備上,亂跑或者是重疊,或者是參加游戲老發(fā)時間比較緊來不及做適配,都可以來試試這個方法,通過填充邊框來保持游戲畫面的原始比例,所以它的缺點(diǎn)也很明顯,在一些移

    2024年02月11日
    瀏覽(20)
  • 【Unity 實(shí)用插件篇】 | UI適配神器 Device Simulator 移動設(shè)備模擬器 的詳細(xì)使用方法

    【Unity 實(shí)用插件篇】 | UI適配神器 Device Simulator 移動設(shè)備模擬器 的詳細(xì)使用方法

    前言 今天帶來的是Unity提供的一個設(shè)備模擬器 Device Simulator 。 它可以幫助開發(fā)者在編輯器中模擬出移動端的環(huán)境,直接進(jìn)行測試。 所有操作都可以在編輯器上進(jìn)行#

    2024年02月11日
    瀏覽(27)
  • Unity 工具之 UniWebView 內(nèi)嵌網(wǎng)頁/瀏覽器到應(yīng)用中,并且根據(jù)UGUI大小放置(簡單適配UGUI)

    Unity 工具之 UniWebView 內(nèi)嵌網(wǎng)頁/瀏覽器到應(yīng)用中,并且根據(jù)UGUI大小放置(簡單適配UGUI)

    目錄 Unity 工具之 UniWebView 內(nèi)嵌網(wǎng)頁/瀏覽器到應(yīng)用中,并且根據(jù)UGUI大小放置(簡單適配UGUI) 一、簡單介紹 二、UniWebView 組件上的幾個參數(shù)屬性選項(xiàng)介紹 三、一些關(guān)鍵接口介紹 四、Transition 五、Memory Management(內(nèi)存管理) 六、Messaging System 七、注意實(shí)現(xiàn) 八、效果預(yù)覽 九、實(shí)現(xiàn)

    2024年01月24日
    瀏覽(21)
  • Unity UGUI一鍵綁定UI控件工具(編輯器拓展)

    Unity UGUI一鍵綁定UI控件工具(編輯器拓展)

    全為一鍵生成 實(shí)現(xiàn)自動生成代碼綁定UI控件 并生成字典保存UI控件 減少自己拖拽 和手動書寫過程 適用動態(tài)加載面板 建議搭配UI框架使用 根據(jù)當(dāng)前選中的gameobject 查找其下方是否有對應(yīng)類型的控件 有就保存到字典中 然后通過向上遞歸拼湊地址,然后生成到粘貼板 直接粘貼到目

    2024年04月23日
    瀏覽(32)
  • Unity跨平臺UI解決方案:可能是最全的FairyGUI系列教程

    Unity跨平臺UI解決方案:可能是最全的FairyGUI系列教程

    FairyGUI的項(xiàng)目文件結(jié)構(gòu) .objs 內(nèi)部數(shù)據(jù)目錄。注意:不要加入版本管理,因?yàn)檫@里的內(nèi)容是不需要共享的。 assets 包內(nèi)容放置目錄,資源內(nèi)容都在這里面,里面還可以分不同的包,便于區(qū)分管理(看下圖) settings 配置文件放置目錄。 ****.fairy 項(xiàng)目識別文件,也就是項(xiàng)目名稱 目錄

    2024年04月14日
    瀏覽(102)
  • 【Unity 實(shí)用工具篇】 | UIEffect 實(shí)現(xiàn)一系列UGUI特效,灰度、負(fù)片、像素化特效

    【Unity 實(shí)用工具篇】 | UIEffect 實(shí)現(xiàn)一系列UGUI特效,灰度、負(fù)片、像素化特效

    前言 在Unity中 UGUI 的使用幾乎是必不可少的,雖然也有NGUI、FGUI等可以使用,但使用UGUI的還是占多數(shù)。 而在使用UGUI的過程中,除了一些基礎(chǔ)的UI交互頁面及邏輯,學(xué)習(xí)一些UGUI特效的使用也是很有必要的。 接下來會分享一些UGUI中比較簡單且實(shí)用的特效,供有需要的小伙伴學(xué)習(xí)

    2024年04月17日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包