中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行NGUI戰斗飄字及界面優化

發布時間:2022-01-14 09:07:30 來源:億速云 閱讀:223 作者:柒染 欄目:大數據

本篇文章為大家展示了如何進行NGUI戰斗飄字及界面優化,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

1. 飄字問題:飄字會有Alpha的漸變,當漸變到0的時候,會觸發UIPanel的Rebuild

解決問題:查找哪些地方觸發了Rebuild,在UIPanel中添加日志代碼,查找出對應的UI控件,將Animation中的Alpha的最小值修改為大于0.001,并將label的位置設置到無窮遠處,同時不要做顯隱操作

public UIDrawCall FindDrawCall (UIWidget w)
	{
		Material mat = w.material;
		Texture tex = w.mainTexture;
		int depth = w.depth;
 
		for (int i = 0; i < drawCalls.Count; ++i)
		{
			UIDrawCall dc = drawCalls[i];
			int dcStart = (i == 0) ? int.MinValue : drawCalls[i - 1].depthEnd + 1;
			int dcEnd = (i + 1 == drawCalls.Count) ? int.MaxValue : drawCalls[i + 1].depthStart - 1;
 
			if (dcStart <= depth && dcEnd >= depth)
			{
				if (dc.baseMaterial == mat && dc.mainTexture == tex)
				{
					if (w.isVisible)
					{
						w.drawCall = dc;
						if (w.hasVertices) dc.isDirty = true;
						return dc;
					}
				}
				else mRebuild = true;
                if (mRebuild)
                {
                    DebugShow(w);
                }
                
				return null;
			}
		}
        DebugShow(w);
		mRebuild = true;
		return null;
	}
 
    private void DebugShow(UIWidget w)
    {
        string path = "";
        Transform t = w.transform;
        while(null != t)
        {
            path += t.transform.name + "/";
            t = t.parent;
        }
 
        Debug.LogWarning("<color=white>" + path + "time:" + Time.time+ "</color>");
    }

查找出對應的UI控件,將Animation中的Alpha的最小值修改為大于0.001(UIWidget),及TweenAlpha動畫中做同樣的修改

	/// <summary>
	/// Update the widget's visibility and final alpha.
	/// </summary>
 
	public override void Invalidate (bool includeChildren)
	{
		mChanged = true;
		mAlphaFrameID = -1;
 
		if (panel != null)
		{
			bool vis = (hideIfOffScreen || panel.hasCumulativeClipping) ? panel.IsVisible(this) : true;
			<span >UpdateVisibility(CalculateCumulativeAlpha(Time.frameCount) > 0.001f</span>, vis);
			UpdateFinalAlpha(Time.frameCount);
			if (includeChildren) base.Invalidate(true);
		}
	}

2.  戰斗界面 由技能倒計時、連擊數等組成

1). 修改倒計時結束時候的label不隱藏,改為設置為空,設置的string 方法使用U3d內存優化UILabel使用String的問題 。

2). 對經常刷新的區域單獨加UIPanel

3). 盡量減少對界面元素的顯隱操作,以減少UIpanel的Rebuild過程,從而減少DrawCall

經測試 UIPanel的 Rebuild大量減少,尤其是飄字的。

上述內容就是如何進行NGUI戰斗飄字及界面優化,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黄陵县| 民权县| 大冶市| 河东区| 滦南县| 当雄县| 张家港市| 海兴县| 习水县| 巢湖市| 甘泉县| 桐庐县| 五莲县| 都兰县| 苏尼特右旗| 鄢陵县| 内乡县| 德保县| 鲁甸县| 广平县| 四子王旗| 绥芬河市| 芜湖县| 县级市| 乐山市| 青神县| 进贤县| 东辽县| 凤山市| 平武县| 将乐县| 延川县| 曲阜市| 来安县| 正安县| 天台县| 外汇| 赣榆县| 丽江市| 临泉县| 湖南省|