Unity 各個系統

                                             Animator:

file:///D:/unity2018insatll/Editor/Data/Documentation/en/Manual/AnimationOverview.html

每個動畫clip可以看作是一個線性的記錄。

動畫來自: MAYA MAX  

動畫融合: 混合多個剪輯,以提供一個流暢的運動,因爲球員在現場移動。

unity把工作流合併到Mecanim中,以淘汰老版動畫。

從Unity動畫導出—插件

unity中當查看導入的動畫關鍵幀時,動畫窗口提供動畫數據的只讀視圖。要編輯此數據,請在Unity中創建一個新的空動畫剪輯然後選擇、複製並粘貼導入的動畫剪輯中的動畫數據到新的可寫動畫剪輯中。

unity中由於大量的人形動畫,因爲unity提供的Avatar系統:識別一個特定的動畫模型在佈局上是人形的,模型的哪些部分對應於腿部、手臂、頭部和身體。

提供動畫時,對材料和組件的變量進行動畫化,即事件

TimeLine: 可以在相同的序列中動畫許多不同的遊戲對象

The Animation window: 可以創建離散的單個動畫編輯。

 

時間線視圖有兩種模式:

即多普勒表和曲線【每個動畫屬性的值隨時間變化的視圖】。

曲線缺點:不易觀察,比如:一個用於旋轉彈跳立方體的簡單動畫剪輯。彈跳的Y位置值可能在0到2之間變化(這意味着立方體在動畫期間彈出2個單位高);然而,旋轉值從0到360(表示它的旋轉度)。當同時查看這兩條曲線時,位置值的動畫曲線將很難識別,因爲視圖將被放大以適應窗口內旋轉值的0-360範圍:F鍵可以縮放到當前選定的關鍵幀。A鍵 查看整個時間線

 

 Mecanim:   

狀態機可以被看作是一種流程圖,或者是一個用統一的可視化編程語言編寫的簡單程序。

按住鼠標滾輪: 可以拖動狀態流程圖。

 

切換到Layers時:

使您可以在一個動畫控制器中有多個動畫層同時工作,每個層都由一個單獨的狀態機控制。

常見用途是讓一個單獨的層在一個基本層上播放上半身動畫,控制角色的一般運動動畫。

 

State Machine Behaviours 

Sub-State Machines【子狀態機】

對於一個複雜的動作可能由多個階段組成。與其用單個狀態處理整個操作,不如確定不同的階段併爲每個階段使用單獨的狀態。例如,一個角色可能會有一個動作叫做“神槍手”【它蹲下來瞄準,射門,然後再站起來】,跑,跳。

注意: 子狀態機只是在編輯器中可視地摺疊一組狀態的一種方式。

子狀態內部會有一個額外狀態以up開頭。是鏈接外部狀態的橋樑,如下。

   

子狀態機:

 

Animation Layers

unity使用動畫層來管理不同身體部分的複雜狀態機。這方面的一個例子是,如果你有一個下半身層用於步行跳躍,而一個上半身層用於投擲物體/射擊。

在每個層上,您可以指定掩碼(動畫模型中應用動畫的Avatar)和混合類型。覆蓋意味着來自其他層的信息將被忽略,而加法意味着動畫將被添加到以前的層之上。

 

掩碼屬性用於指定在此層上使用的掩碼。例如,如果您想在模型的上半身上播放一個投擲動畫,同時您的角色也可以同時行走、跑步或站立。您可以在定義上半身部分的層上使用一個面罩來播放投擲動畫,Mask把上半部分遮住 如下所示:

 

有時,能夠在不同的層中重用相同的狀態機是很有用的。例如,如果您想要模擬“受傷”的行爲,而不是“健康”的動作,而是爲步行/跑/跳提供“受傷”的動畫。您可以單擊其中一個層上的“同步”複選框,然後選擇要與之同步的層。然後,狀態機結構將是相同的,但是狀態所使用的實際動畫剪輯將是不同的,複製了狀態圖 但是不復制動畫。

同步層根本沒有自己的狀態機定義-相反,它是同步層源的一個實例。在同步層視圖中對狀態機的佈局或結構所做的任何更改(例如,添加/刪除狀態或轉換)都是對同步層的源進行的。唯一對同步層唯一的更改是在每個狀態中使用的選定動畫。

[對同步層的任何更改,也會對同源層更改,只有各自選定的動畫不會同步]

 

 

Solo and Mute functionality

https://blog.csdn.net/qq_39635239/article/details/80320835

  • 基本的原則是,如果一個狀態被標記爲solo,那麼其餘的狀態轉移將被視爲選中mute;
  • 如果solo和mute同時被選中,那麼mute的優先級更高(即視爲只選中了mute)

Target Matching//使Target 協調

應用: 如果某一時刻 角色必須以一隻手或一隻腳在某一時間的某一地點着陸。

Animator.MatchTarget function  

animator.MatchTarget(jumpTarget.position, jumpTarget.rotation, AvatarTarget.LeftFoot, 
                                                       new MatchTargetWeightMask(Vector3.one, 1f), 0.141f, 0.78f);

角色開始脫離地面的位置:始脫離地面的位置,規範化時間內,此時動畫播放的進度爲14.1%

落地的位置,是78.0%

注意:只有在遊戲中調用正確的擡起點和落地點時纔有意義。

 

Inverse Kinematics(反動力學)

子關節的位置根據其父關節的旋轉而變化,因此可以根據其包含的各個關節的角度和相對位置來確定關節鏈的終點。這種提出骨架的方法被稱爲正向運動學。【由手帶動前臂,帶動大臂,帶動肩膀】

應用: 讓角色的腳在一個不平整的表面上站穩時

由於我們不打算讓角色的手到達物體的中心(圓柱體的樞軸點),我們將一個空的子對象(在這種情況下,稱爲“柱面抓取柄”)放置在圓柱體上。

案例   file:///D:/Unity5.6.6/Editor/Data/Documentation/en/Manual/InverseKinematics.html

 

Blend Trees

將多個動作混合在一起。

例如: 根據人物的速度來混合行走和跑步的動畫。或者在運行時向左或向右傾斜。

區分過渡樹和混合樹是很重要的。雖然兩者都用於創建流暢的動畫,但它們被用於不同的情況。

過渡樹:

      用於在給定的時間內平穩地從一個動畫狀態過渡到另一個動畫狀態。

混合樹:

      用於允許多個動畫通過不同程度地合併它們的部分來平滑地混合。每個運動對最終效果的貢獻程度由一個混合參數控制,它只是與Animator控制器關聯的數值動畫參數之一。爲了使混合運動有意義,混合的運動必須具有相似的性質和時間。混合樹是動畫狀態機中的一種特殊狀態類型。爲了使混合效果更好,剪輯中的動作必須在標準時間的同一點發生。例如,步行和跑步動畫對齊

<1. 創建混合樹

<2. 給混合樹根節點添加子動畫

<3. 如圖:

<4. 可以切換到2D  Freeform Cartesian[2D卡迪爾座標方向]或者2D自由的方向中看動畫融合的權重。

 分別選中藍色的四角形點

動畫之間的混合使用線性插值處理(即每個動畫的數量是按混合參數加權的獨立動畫的平均值)。但是,您應該注意到根運動不是以相同的方式插值的。

     (1). 1D Blending:  檢查器中paly,拖動紅色參數箭頭查看影響。

   

上圖: 1是自動設置閥值參數,閥值之間的跨度是一致的   2.根據某個軸的速度或者角速度來設置閥值。

    The 2D Blending Diagram /二維混合圖

 

   (2) Direct Blending

      使用直接混合樹允許您將動畫參數直接映射到BlendTree子節點的重量。如果您想要精確地控制正在混合的各種動畫,而不是使用一個或兩個參數間接地混合它們(在1D和2D混合樹中)..簡單地繞過了交叉衰落,或各種2D混合算法.  混合動畫的面部表情,或當混合附加動畫。

   (3) 2D Simple Directional具有方向性的動畫片段,同一方向上最好不要有多個動畫片段

   (4) 2D Freeform Directional :主要用於控制具有方向性的動畫片段,同一方向上允許有多個動畫片段,(0,0)位置上必須有一個動畫片段

   (5) 2D Freeform Cartesian : 不一定具有方向性的動畫片段.(一般用這個)

 

       Additional Blend Tree Options

      Adjust Time Scale > Homogeneous Speed:   按鈕重新調整剪輯的速度,使其與所選參數的最小值和最大值相對應,但保持與最初擁有的相對速度相同。只有當所有的動作 都是動畫剪輯而子混合樹時,調整時間尺度纔是可用的。

 

Animator系統的性能優化:

<1. 當你沒有動畫播放使用的骨骼,處理成本應該可以忽略不計。如果它們的附件不存在或隱藏,則成本更低。

<2.網格合併:  只要有可能(如果角色只有一種材料),就把有皮的網格組合起來。將一個角色分割成兩個蒙皮的網格渲染器會降低性能。

<3. 在沒有混合的情況下播放單個動畫剪輯比使用老版動畫系統慢.  老版動畫非常直接,採樣曲線並直接寫入變換。Unity當前的動畫系統有臨時的緩存,它用來混合,並有額外的複製採樣曲線和其他數據。

<4. 動畫縮放曲線比動畫平移和旋轉曲線更昂貴。避免使用比例動畫。(注意:這不適用於常量曲線(對於動畫剪輯的長度具有相同值的曲線)。常數曲線經過優化,比普通曲線成本更低。與默認場景值(常量)相同的常數曲線值不寫入每個幀的場景。)

<5. 同步層的開銷 :取決於是否同步,是否同步取決於該層所播放的動畫和混合樹。當層的權重爲零時,unity將跳過層更新。

<6. 對於人型動畫,如果使用了Avatar Mask,如果不需要IK目標或手指動畫,則刪除 

      對於普通動畫:根運動比不使用根運動要昂貴得多。如果不使用根運動,請確保沒有指定根骨。

場景中優化: 

使用散列代替字符串查詢動畫。shotFloat = Animator.StringToHash("Shot");

實現一個小AI層來控制動畫,有限狀態機。爲OnStateChange、OnTranstionBegin和其他事件提供簡單的回調。使用狀態標記可以輕鬆地將您的AI狀態機與unity動畫狀態機相匹配。

運行時優化,始終通過將Animator組件的裁剪模式設置爲基於渲染器的動畫來優化動畫【渲染器不可見時禁止動畫變換寫入,IK】,禁用蒙皮網格組件在屏幕外的更新。

 

Optimizing FBX files

file:///D:/unity2018insatll/Editor/Data/Documentation/en/Manual/HOWTO-exportFBX.html  //建模軟件的導出優化

 

                                 Navigation and Pathfinding

Navigation :智能地在遊戲世界中移動。

NavMesh:導航網格

Off-Mesh Link: 非網格鏈接組件,跳過溝渠或籬笆,或者在穿過它之前打開一扇門,都可以被描述爲脫離網格的鏈接。

NavMesh Obstacle: 應該避免的移動障礙.

Following the Path: 我們首先需要將起點和目的地位置映射到它們最近的多邊形(可見角落)。然後,我們開始搜索從開始的位置,訪問所有的鄰居,直到我們到達目標多邊形。跟蹤訪問的多邊形允許我們找到從開始到目的地的多邊形序列。

Path: 描述從起點到目標多邊形的路徑的多邊形序列稱爲道路。 代理人將始終轉向走廊的下一個可見角落,到達目的地。

多個代理(agents )同時移動: 當處理多個代理同時移動時,它們在相互迴避時需要偏離原來的路徑,使用一條線段組成的路徑就變的困難了。由於每個幀中的代理移動都很小,所以我們可以利用多邊形的連通性來修復走廊,以防我們需要繞道。然後我們迅速找到下一個可以看到的拐角處。

Avoiding Obstacles:

轉向邏輯採用下一個拐角的位置並基於該數字計算出到達目的地所需的期望方向和速度(或速度)。 存在於其他代理髮生碰撞的可能。

障礙物避免選擇新的速度,該速度在期望方向上移動和防止將來與導航網格的其他代理和邊緣碰撞之間平衡。 Unity正在使用倒數速度障礙(RVO[Reciprocal Velocity Obstacles])來預測和防止碰撞。

【向量的相交性問題是在一定時間內不發生相交;若是人工智能精粹中躲避障礙物的解法(但是一個是靜止的; 兩個球以一定速度運動的相交性問題),兩個球以一定速度運動會不會相交的問題,人與人之間推搡使用RVO】

RVO:https://blog.csdn.net/onafioo/article/details/86625009

全局導航和本地導航之間的區別:

描述路徑的多邊形線性列表是一種靈活的轉向數據結構,可以隨Agent位置的移動而進行局部調整。

本地導航試圖找出如何在不與其他代理或移動對象發生碰撞的情況下有效地移動到下一個角。

 

                Optimizing graphics performance

https://gameinstitute.qq.com/community/detail/127106  //Unity UI優化(二) - 填充率,畫布和輸入

https://www.cnblogs.com/alan777/p/6204759.html  //Unity渲染優化

file:///D:/unity2018insatll/Editor/Data/Documentation/en/Manual/OptimizingGraphicsPerformance.html

減少包體的建議: 紋理、聲音和動畫

 

一: 壓縮紋理

 

Textures: 使用平臺特定覆蓋的紋理壓縮格式,把紋理壓縮爲專門的格式,爲快速紋理採樣優化。

unity 爲每個平臺設置了其默認格式包體只包含轉換後的紋理。源資產文件以原始格式保留在項目的“Asset”文件夾中。

 

自己設置紋理壓縮格式:

【但在某些情況下,希望重寫默認格式,爲某些紋理選擇不同的壓縮格式(例如,如果您使用紋理作爲掩碼,只有一個通道,則可以選擇使用BC4格式來節省空間,同時保持質量)】。

若要爲每個平臺應用自定義設置,請使用紋理導入程序批量設置默認選項,然後使用平臺特定覆蓋面板覆蓋特定平臺的默認設置。

下圖,每個平臺默認的表示:

 

當您使用目標平臺不支持的紋理壓縮格式時,紋理將解壓縮爲RGBA 32並與壓縮的紋理一起存儲在內存中 。浪費了時間和內存。所以要使用支持的紋理壓縮格式

紋理在CPU上解壓縮爲DXT或ETC,然後在運行時上傳到GPU。壓縮時間長,但在運行時解壓縮非常快。有損壓縮注意平衡質量和內存大小。

壓縮對照表 : 文檔中搜 Texture compression formats for platform-specific overrides

對於Android: 

1 .  除非您是針對特定的硬件(如Tegra),否則ETC 2壓縮是Android最有效的選擇,它提供了質量和文件大小的最佳平衡(以及相關的內存大小要求)。如果您需要一個alpha通道,您可以將其存儲在外部,並且仍然可以從較小的紋理文件大小中獲益。

2.  您可以將ETC1用於具有Alpha通道的紋理,但僅當構建用於Android且紋理放置在圖集上時(通過指定打包標記)。 要啓用此功能,請使用紋理的ETC1複選框選中“壓縮”。 Unity將生成的圖集分成兩個紋理,每個紋理沒有Alpha通道,然後將它們組合在渲染管道的最後部分。

3.若要在紋理中存儲alpha通道,請使用RGB 16位壓縮,所有硬件供應商都支持

 

二:減小圖像的物理大小:

減少紋理的MaxSize , 通過降低分辨率來降低內存。同時也提高GPU對紋理的採樣模式  FitterMode

 

三:網格與動畫

壓縮網格和導入動畫剪輯,節省內存。但壓縮可能會帶來一些不準確的地方。試驗什麼水平的壓縮是可以接受的。

四: DLLs

應該避免依賴System.dll或System.Xml.dll. 存儲大小增加了大約1兆字節。

.NET 2.0和.NET 2.0的子集。在“播放機設置”中爲您的生成選擇適當的級別。

 

五: 優化圖形性能

GPU:   

file:///D:/unity2018insatll/Editor/Data/Documentation/en/Manual/SL-ShaderPerformance.html   //shader優化

受到填充率或內存帶寬的限制.降低顯示分辨率並運行遊戲。如果較低的顯示分辨率使遊戲運行得更快,您可能會受到填充率的限制。

       填充率是指GPU在屏幕上每秒可以渲染的像素數。如果我們的遊戲收到填充率的限制,意味着我們的遊戲每幀嘗試繪製的像素數量超過了GPU的處理能力。

  Shader:

<1. 儘量減少數學函數(如pow、exp、log、cos、sin、tan)資源密集,在像素着色器中的使用,因此儘可能避免使用它們。

<2. 記住,Alpha測試(丟棄)操作經常會使片段着色器變慢。

<3. 浮點數精度問題Fload fixed 。儘可能使用半精度的變量[half ]。

<4. PC, 頂點數 200 K和3M以下

<5. 如果您使用的是內置着色器,請選擇Mobile或Unlit類別中的着色器。 它們也適用於非移動平臺,但它們是更復雜着色器的簡化版和近似版。

<6. 只有一個(最好是方向性的)像素光會影響幾何體,而不是倍數。

<7. 使用像素着色器或紋理組合器混合多個紋理,而不是多通道方法。

 

CPU : DrawCall

對象中使用更少的材料,把不同的紋理放到一個更大的紋理圖譜中。

在非移動對象上設置靜態屬性,以允許內部優化,如靜態批處理。

儘量避免使用霧。

使用天空盒來“僞造”遠處的幾何體。

靜態批處理會導致內存和存儲開銷,而動態批處理會導致一些CPU開銷。

動態批處理與圖形工作不兼容

批處理動態GameObjects每個頂點具有一定的開銷,因此批處理僅應用於總共包含少於900個頂點屬性的網格。帶有光照貼圖的GameObjects不能動態,

建模優化: 保持正逆運動學分離  搜 Modeling characters for optimal performance

 

 

 

 

六: Lighting 

照明性能最快的選擇總是創建照明,根本不需要計算。要做到這一點,使用Lightmap來“烘焙”靜態照明一次,而不是計算每個幀。生成光映射環境的過程只需稍長一點,而不只是在“Unitity”中的場景中放置一盞燈。

不要設置射向相機的光源來實現模型邊緣照明效果,在shader中計算。

每個燈都有一個渲染模式設置,可以設置爲重要或不重要;標記爲不重要的燈具有較低的渲染開銷。用於修改最終作爲像素燈的燈數和作爲頂點燈的燈數。

 

 

 

                                              Textures

 

如果有一張PNG圖片, 95%的地方是全透明的,而在全透明的地方,RGB值是有意義的;

如果設置了alphaIsTransparency屬性,則全透明的地方,Unity會將RGB值全部丟失!!!,

所以:

如果要使用此紋理的4個通道做數據存儲時(比如地型的4通道混合),千萬不能勾選alphaIsTransparency屬性.

PNG圖片僅僅用於UI顯示;則可以勾選此屬性。

一般是2^n格式,如果不是則在此處可以自己設置,但是如果是sprites格式,則必須由導入前就設置好

 

Android:

音效加載:

針對安卓平臺,如果一開始就將音效給加載進去的話,那麼上圖中的內存佔用率就會很大,導致最爲明顯的變化就是,場景加載的時候卡頓嚴重,影響遊戲的體驗優化方案。

對於背景音樂(高頻音樂)設置加載模式爲streaming模式,使用緩存加載,播放完畢後會自動從緩存中卸載,從而提高內存佔用率,如果你發現的的音效很佔內存那麼試試這個操作肯定不錯。

1.取消x86架構的兼容選項

一般情況下android平臺不需要編譯x86的版本,因爲設備太少了,需要考慮對應平臺的時候可以單獨打一個x86版本的包。在OtherSetting中。 cpu x86 手機基本沒有了

,安卓包減小10M,爽歪歪。

 

 

 

                                        Sprite Atlas

 無論精靈的紋理設置是什麼,在圖集中打包,最終圖集紋理只會按照atlas中的設置。

2. NGUI和UGUI 圖集的不同

(1)NGUI 必須先打出圖集,然後開始做界面,我們始終都要考慮我們的UI圖集,如圖集的大小會不會超過 1024K,圖集如何規劃 ;
(2)UGUI,開發者不需要去管理自己的圖集,做界面的時候只用小圖,而在最終打包的時候,引擎會把我們的小圖打包成一張大的圖集 

[Mode 各個選項的說明:設置使用新版或者老版的打包方式]
(1)disabled不啓用、
(2)enabled for builds(legacy sprite packer):打包時啓用(針對sprite packer這種打包方式)
(3)always enabled(legacy sprite packer):總是啓用(針對sprite packer這種打包方式)
(4)enabled for builds:打包時啓用(針對sprite Atlas這種打包方式)
(5)always enabled(針對sprite Atlas這種打包方式)

可是開發的時候就想看圖集會佔幾個Draw Call,而不是讓unity build是自己打包。

第二步:設置 tag 和 Mesh Type

Mesh Type有兩個可選項:
(1)Full Rect:會把所有的小圖按照矩形的方式來排列,如果寬高不一樣的圖片,它們會自動補起。
(2)Tight: 是緊密打包方式,也就是儘可能的把圖片都打包在圖集上,更省空間。

第三步:點擊Pack,完成打包

Window----->2D------->Sprite Packer 點擊左上角的 pack 就可以啦,完成! 【注意是否設置成了老版的圖集打包】

補充說明:

(1) 放在Resources文件夾中的圖片,Unity不會打包到圖集中!
(2) 打包好的圖集會放在緩存文件夾Project\Library\AtlasCache裏面!

 

新版本的圖集打包方式:sprite atlas

sprite Atlas是2017版本之後的圖集打包方式, Sprite Atlas 針對舊版本的圖集打包系統Sprite Packer在性能和易用性上的不足,進行了全面改善。

第一步:設置 Mode: Always Enabled

Edit---->ProjectSetting------->Editor--------->Mode

第二步: 在Project 面板中右鍵 create -> sprite atlas

第三步: 分配資源給 sprite atlas , 完成!

可以將文件夾,紋理或精靈分配給Sprite Atlas。可以將整個文件夾分配給Sprite Atlas資產,該文件夾中的所有紋理(包括子文件夾)都將被打包。

新功能Variants: 變體

    就是指原有圖集的一個變種。它會複製原圖集的貼圖,並根據一個比例係數來調整複製貼圖的大小。通常用於爲高分辨率和低分辨率的屏幕準備不同的圖集。因爲如果只准備一套高分辨率的圖集,在低分辨率的設備上佔用內存過多。反之,如果只准備一套低分辨率圖集,在高分辨率的設備上就會模糊。

    ==》

新功能:圖集訪問

Sprite Atlas作爲一種資源開放給用戶,可以在腳本中訪問,還可以通過名字獲取圖集中的精靈。這樣用戶可以更加直接地隨時編輯圖集,而且不用去單獨加載圖集中的每個精靈。UnityEditor下的。

Resources下的圖片不能打包圖集,且用不用的都會打到包裏,應該使用圖集形式,減少內存和DrawCall

    void Start()
    {
      transform.GetChild(0).GetComponent<Image>().sprite=   LoadSprite("New Sprite Atlas", "time_green_6");
    }
    SpriteAtlas numAtlas;
    public Sprite LoadSprite(string atlasName,string spriteName)
    {
        Sprite sprite = null;
        if (numAtlas != null)
        {
             sprite = numAtlas.GetSprite(spriteName);
        }
        else
        {
            numAtlas = Resources.Load<SpriteAtlas>(atlasName);
            sprite = numAtlas.GetSprite(spriteName);
        }
        return sprite;
    }

 

 

                                               UI系統

Draw order of elements(繪製UI的順序)

繪製順序和在層級面板中的順序是一樣的,如果有重疊,則後一個顯示在層級中前一個的上邊。SetSiblingIndex控制層級順序

Screen Space - Overlay

最前邊,如果調整屏幕大小或更改分辨率,Canvas將自動更改大小以匹配此大小。

相機如果是透視,如果調整屏幕大小,更改了分辨率,或者相機的尺寸,畫布也會自動更改大小以匹配。

World Space

畫布的大小可以使用它的rect變換手動設置。

Pivot

當設置爲Pivot,則可以調整UI的支點。可以在Rect Transform中調整UI的支點。

Image

Simple - 平等的展開圖片。

Sliced - 切片模式,對應圖要進行九宮格。大小不會扭曲角,只有中心部分是拉伸。

Tiled - 對整個精靈都是平鋪的。

Filled -填充,填充起點  填充度數 參數控制  順時針  使用完美像素-即圖片自身的像素數和大小

Interaction Components(交互組件)

交互組件至少有一個UnityEvent,當用戶以特定方式與組件交互時調用該UnityEvent。 UI系統捕獲並記錄從附加到UnityEvent的代碼傳播的任何異常。

Toggle

 Is On : 選擇或者不選擇,只有在unity運行狀態下,才能更新到場景顯示上。

Toggle Group

ToggleGroup可以用來對一組相互排斥的切換進行分組。屬於同一組的切換被限制,因此一次只能選擇其中一個-選擇其中一個會自動取消所有其他的選擇。

AllowSwitchOff:  如果沒有勾選,則點擊已經勾選的Toggle不會改變自身的狀態,如果勾選,則點擊已經勾選的Toggle改變自身的狀態。

單選:

創建Panel,添加組管理組件-->創建多個Toggle作爲子集,且Group屬性關聯到Panel上。

單擊Toggle時調用的UnityEvent。事件可以將當前狀態作爲bool類型的動態參數發送。此處可以關聯參數改變後,需要做的行爲

多選:

就是獲取所有的Toggle,統計是開啓狀態,且選擇項<最多選則數,否則就屏蔽掉,不讓選擇。

 

Dropdown(下拉列表)

這裏寫圖片描述

Input Field

若要獲取輸入字段的文本,請在InputField組件本身上使用Text屬性,而不是使用顯示文本的文本組件的Text屬性

Aspect Ratio Fitter

Rich Text

它指示關鍵字在文本中查找標記。

We are <i>斜體</i> not amused.
We are <b>粗體</b> amused.
 We are <size=25>設置字號</size> unaffected.
we are <color=green>設置爲綠色</color>

設置圖文混排:

<1. 使用富文本佔位 

<2.使用正則表達式提取用於佔位的富文本  

<3.重繪text網格,在佔位處生成繪製一個網格並且把圖片根據UV貼到網格上添加上(或者直接創建一個圖片的預製體,讓後加載、更新圖片、生成)。

根據uv座標貼紋理:

http://edu.manew.com/course/343/tasks  //UGUI源碼

uv: 指的是模型貼圖的座標,根據模型貼圖的座標把圖片貼到模型上去。

根據UV裁剪圖片,然後貼上

<4.給圖片添加點擊事件。射線,碰撞器

百度雲工程:圖文混排

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章