unity3d教程GUI深度控制(unity gui 从中心透明)
GUI深度控制
通常如果我们制作的游戏没有复杂的 UI 表现,比较少会遇到 GUI 重叠的情况,所以比较不用理会到 GUI 的深度,哪一个叠在上面,哪一个压在下面,显得没那么重要;在较丰富的 UI 表现中,GUI 重叠将可能常会发生;如果是使用 GUI Texture 或 GUI Text,只需要调整 transform.position.z 就能轻易的为 GUI 调整顺序,但是,如果是使用 OnGUI() 撰写 GUI Control 的话,有写过的人都知道,它的显示顺序是依照程式码从第一行写下来依序列出,如此的话,就只能从程式码一句句依序撰写,如果要做 GUI 前後位置变动等等的动态,不就要设计一些判断方式来控制,好像相当的不方便。
有时候,我们可能习惯依功能、用途..等为程式分类并独立拆分成不同的 class 来使用,在 Unity 中,这更是必做的事情,因为每个 script 都是 compontent,所以,我们可能会为了写 OnGUI() 而使用一个单独的 script 专门用来写 GUI,再拉给场景中任一物件就可以显示出来,虽然撰写方式好像很简单,但当需求越来越大时,可能会发现 OnGUI 好像没那么灵活,活用性欠佳,毕竟它表面上看来是那么的程序化。
为了使 OnGUI() 能更灵活一点控制,最基本的需求就是每个 GUI Control 都能改变深度,以使它们改变前後的排列吧!有写过网页的人都知道,在 CSS 中的 z-index 是多么基本的东西;当然 Unity 的 GUI 也有类似的 - GUI.depth,从官网的的说明和范例中可以发现,这个 GUI.depth 和我们直接撰写的其他 GUI 不同,它必须是个别分开写在不同的 script 中才会正常发挥作用,也就是当 A script 的 GUI.depth = 0 及 B script 的 GUI.depth = 1 时,A script 中的 GUI 将会盖在 B script 的 GUI 上面。
于是,我们可能要重新思考,GUI 所代表的功能及用途上,是否也要像其他 Component 一样,拆分为不同的 script,而不再很直觉的在同一个 script 中写得长长一大串;虽然 Unity 的 GUI 并不像其它程式开发工具那样有视觉化的工具,只要将元件拉进 View 就会自动写好程式码,但其实 Unity 的 GUI 是可以很灵活的,只要将需求功能单独拆分开来制作,每个 GUI script 就像是我们为游戏内容制作的 Component 一样,需要什么 GUI 就拉什么进来,将会变得更为灵活而且复用性也更高,且更为客制化。
以上就是关于《unity3d教程GUI深度控制(unity gui 从中心透明)》的全部内容,本文网址:https://www.7ca.cn/tg/40281.shtml,如对您有帮助可以分享给好友,谢谢。