1. 程式人生 > >Unity3D ugui攝像機AABB動態剔除不可見UI

Unity3D ugui攝像機AABB動態剔除不可見UI

     UI 相機的可見區域之外,雖然會被顯示卡繪製剪裁掉,但是會消耗drawcall。我們可以利用AABB碰撞檢測剔除掉,相機之外的ui元素,就是active false掉。效果如下:

     

this.planes = GeometryUtility.CalculateFrustumPlanes(this.uiCamera);

using System;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections;


namespace Framework
{
	public class RenderTestVisible : MonoBehaviour
	{
		private PolygonCollider2D box;

		public GameObject firstChild;

		void Start()
		{
			this.box = this.GetComponent<PolygonCollider2D>();

			if (this.firstChild == null)
			{
				this.firstChild = this.gameObject;
			}

			ACoroutineManager.StartCoroutineTask(Check());
		}


		IEnumerator Check()
		{
			while (true)
			{
				if (this == null)
				{
					yield break;
				}
				else 
				{
					if (GeometryUtility.TestPlanesAABB(AUIManager.instance.planes, this.box.bounds))
					{
						this.firstChild.SetActive(true);
					}
					else
					{
						this.firstChild.SetActive(false);
					}

					yield return 5;
				}
			}
		}
	}
}
  • 使用GeometryUtility.CalculateFrustumPlanes獲得ui相機的平面
  • 使用GeometryUtility.TestPlanesAABB判斷碰撞
  • 使用PolygonCollider2D來和攝像機檢測碰撞
  • 需要動態檢測的ui上掛載,PolygonCollider2D元件和RenderTestVisible元件
  • RenderTestVisible上GameObject是需要動態active變化的物件
  • yield return 5 是每5幀進行一次碰撞檢測

相關推薦

Unity3D ugui攝像機AABB動態剔除可見UI

     UI 相機的可見區域之外,雖然會被顯示卡繪製剪裁掉,但是會消耗drawcall。我們可以利用AABB碰撞檢測剔除掉,相機之外的ui元素,就是active false掉。效果如下:      

Unity3D UGUI攝像機跟隨主角(簡明易懂)NGUI下也可以參考使用

我在這裡寫兩個方法,一種鏡頭是跟隨主角,但不隨著主角旋轉而旋轉。另一種是鏡頭是跟隨主角,並且隨著主角旋轉而旋轉。兩個方法都會用不同的方式寫。 第一種,指令碼掛在Camera下 public class CameraFollow : MonoBehavio

C++字串剔除首尾可見字元

void Trim(string &str) { TrimLeft(str); TrimRight(str); } void TrimLeft(string &str) { if (str.empty()) { return; } st

uGUI使用程式碼動態新增Button.OnClick()事件(Unity3D開發之十二)

猴子原創,歡迎轉載。轉載請註明: 轉載自Cocos2Der-CSDN,謝謝!uGUI出來這麼久了,也一直沒好好用用,主要是公司專案不用U3D。昨晚用了下Button,還是比較爽的。主要說下用程式碼新增button.OnClick()事件的方法(使用屬性面板新增的方法就不說了)

oracle 12c 新特性之可見字段

創建 oracl alt created 顯式 11g 不可見 插入數據 esc 在Oracle 11g R1中,Oracle以不可見索引和虛擬字段的形式引入了一些不錯的增強特性。繼承前者並發揚光大,Oracle 12c 中引入了不可見字段思想。在之前的版本中

Java可見字符處理

pos java -128 true joiner for col 博客 兩個 逛博客園的時候,看到一篇文章,比較兩個字符串是否相等,比較兩個字符串,用了一個晚上. string m1 = "fa‌?c5‌?04‌?6b‌?c1&

元素可見方法實踐

position nowrap blog class .cn http alt display .class 如果對你有用,復制粘貼,拿走不謝~ <style type="text/css">div:nth-child(2n){ background: #4a2

QT加載jpg、jpeg、gif圖片可見問題解決

left cin margin 圖片 nvl jpg target sin www. 5d輝9OEUK普郴5http://weibo.com/p/1005055848679119 覆忻皆蘸51鍬E坦故BRHhttp://www.docin.com/app/user/user

Unity3d UGUI插件之TSTableView

為我 http 狀態改變 可能 alt 除了 復用 高度 dict   TSTableView是Tacticsoft工作室開發的一款適用於UGUI的列表(Table)插件,設計靈感來源於iOS/Mac的UITableView,提供高復用、高性能的列表,其主要特點是:   采

Unity3D UGUI Shader畫一個圓環

end mas log AI IT targe nsf item form Shader "Unlit/NewUnlitShader" { Properties { _MainTex ("Texture", 2D) = "white" {}

刪除空白行+刪除可見內容+刪除文檔中某個樣式+阻止快速樣式切換

功能 段落 div 選中 所有 切換 pos 點擊 clas 一、刪除空白行 操作:編輯組中的替換---選擇更多---特殊格式---點擊兩次 段落標記(替換行中)----點擊一段落標記(被替換為) 二、刪除不可見內容 操作:文件---檢查問題---檢查文檔---是--

MySQL8.0新特性——可見索引(Invisible Indexes)

mysq test 沒有 官方 ash ann bar htm 一個 MySQL8.0新特性——不可見索引(Invisible Indexes)MySQL8.0開始支持看不見的索引。一個看不見的索引根本不被優化器使用,但是通常是保持正常的。默認情況下索引是可見的。不可見的索

為什麽 Action/ViewController/ProperttyEditor可見可用?

leo after sin ons selection roo rules xtend expand 英文版:https://documentation.devexpress.com/eXpressAppFramework/112818/Concepts/Extend-Fu

jmeter遇到中文可見

文件 遇到 encoding ont hack bin tar 不可 utf-8 配制文件中加入下面,可以解決返回數據中的亂碼 sampleresult.default.encoding=UTF-8 jmeter查看結果樹亂碼 1、在jmeter的bin目錄下找到jm

osgearth2.8關於RectangleNodeEditor編輯點可見的問題

cas earth ati pos nod 可見 ann cast etc static_cast<SphereDragger*>(_llDragger)->setColor(osg::Vec4(0,0,1,0)); Alpha寫成了0 應該寫成

Unity3D — — UGUI之RectTransform

unity3 rect com etc unit ans pix gui DPoS Mask.GetComponent<RectTransform>().anchoredPosition(子物體) = hotKey_image.rectTransform.anc

java課作業一則:動態規劃(優化)

tex value 交叉點 util 並且 class 分享圖片 and 簡單的 /* *1、實驗內容:1)第1題: *設平面上有一個m×n 的網格,將左下角的網格點標記為(0,0)而右上角的網格點標記為(m,n).某人想從(0,0)出發沿網格線行進到達(m,n).

sql server 可見字元處理 總結

原文出處:https://www.cnblogs.com/zzry/p/5729404.html 前言 問題描述:在表列裡有肉眼不可見字元,導致一些更新或插入失敗。 幾年前第一次碰見這種問題是在讀取考勤機人員資訊時碰見的,折騰了一點時間,現在又碰到了還有點新發現就順便一起記錄下。 &nb

小程式填坑之路—input密碼可見可見(已解決)

2018年11月5日下午16:45修改: 經過在手機上多次真機測試,發現這個方法有問題,在電腦上沒什麼毛病。但在手機上,會出現點選眼睛的小圖示不能夠及時顯示或者隱藏密碼,特此對程式碼進行簡化和修改。 <!--修改wxml--> <image class='showIm

hosts檔案可見時的修改方法

說明:   在破解軟體時,需要修改系統的hosts檔案,但有的系統該檔案所在的資料夾不可見,即使設定成隱藏可見, 還是不可見該檔案。   遇到該種情況,可以通過CMD命令符開啟hosts檔案進行修改。   在我個人使用Idea軟體破解時、sublime軟體破解時,finalshell修改主機對映時,均