2019年12月1日 星期日

Unity render to RenderTexture 下的事件

摸 Unity 至少也 2 年多了
不能說自己不熟
但還是有很多基本的運作方式有點摸不清
感覺自己很嫩

這次因為需求將場景繪製到指定的 RenderTexture
一切那麼自然的情況下
才發現因為使用到多個 Camera
所以繪製 RenderTexture的時候我無法正確抓到 mouse events了

因此開了一個小測試專案
場景中的 Cube會列印 OnMouseOver() 事件.

在 TestMain.unity 場景, 因為僅單純使用一個 MainCamera
因此即使繪製過程指定至 RenderTexture
仍可以正確接收並處理 OnMouseOver() 事件

TestCamera2.unity 場景中, 使用 2 個 Camera
SceneCamera將場景繪製到指定 RenderTexture
ScreenCamera僅將 RenderTexture畫到全螢幕做顯示用
但在這個情境下我就無法讓 Cube接收到 OnMouseOver() 事件了
目前無論我怎麼測試 Camera的設置調整都無法接收事件.

(1)
SceneCamera
tag='MainCamera'
Depth=-1
ScreenCamera tag='Untagged'
Depth=-10 or 10
(2)
SceneCamera
tag='MainCamera'
Depth=-1
tag='MainCamera'
Depth=-10 or 10
(3) SceneCamera透過 MainCamControl.cs控制, Update()之前先 Disable其他 cameras

目前的結論大概是
場景中同時存在多個 Cameras之下
render to RenderTexture時就無法順利接收/處理 mouse event.
不確定是不是自己有哪部分搞錯了
只能繼續爬文查資料

沒有留言:

張貼留言