手把手教你在unity中實現一個視覺小説系統(一)
目前市面上這類功能已經很多了,這邊是本人在遊戲項目開發中的一個過程記錄。 美術素材來自互聯網,如有侵權請聯繫我及時刪除。 本期基本功能 打字機效果,單擊後全部顯示、第二次點擊後出現下一句 分支跳轉:Choice、JumpTo log歷史記錄 自動播放auto與速度調節 skip到下一個分歧點 speaker高亮(非speaker半透明黑色顯示)、清除立繪等 系統結構設計 預備知識
昵稱 貓屋小魚丸
貢獻者14
粉絲0
目前市面上這類功能已經很多了,這邊是本人在遊戲項目開發中的一個過程記錄。 美術素材來自互聯網,如有侵權請聯繫我及時刪除。 本期基本功能 打字機效果,單擊後全部顯示、第二次點擊後出現下一句 分支跳轉:Choice、JumpTo log歷史記錄 自動播放auto與速度調節 skip到下一個分歧點 speaker高亮(非speaker半透明黑色顯示)、清除立繪等 系統結構設計 預備知識
昵稱 貓屋小魚丸
【從UnityURP開始探索遊戲渲染】專欄-直達 基礎光照模型 標準光照模型(Standard Lighting Model) 定義:傳統光照計算的框架,通常包含漫反射、鏡面反射和環境光三部分。 特點:非物理經驗模型,計算簡單但缺乏真實感。 從屬關係: 包含 漫反射 和 高光反射 是 Phong模型 和 Blinn-Phong模型
昵稱 SmalBox
【從UnityURP開始探索遊戲渲染】專欄-直達 圖形學第一定律:“看起來對就對” URP光照模型發展史 2018年:URP首次發佈(原LWRP),繼承傳統前向渲染的Blinn-Phong簡化版 2019年:URP 7.x引入Basic Shader的簡化光照模型 2020年:URP 10.x整合PBR核心(GGX+Smith) 2022年:URP 14.x新
昵稱 SmalBox
cpu優化主要是優化cpu使用率,幀率平穩性(卡幀,長耗時任務),主要從以下幾個方面優化 設置合適的幀率。根據遊戲類型設置合適的幀率,比如slg,回合制這種類型遊戲一般開30幀,mmo等即時戰鬥的或者對流暢度有很高要求的可以開60幀。 幀同步與狀態同步的抉擇。一般來説狀態同步會比幀同步的前後端消息量大,也就説消息同步壓力更大。但是狀態同步前端實現起來比較簡單,只用根據對應消息更新狀態即可。
昵稱 落幕夜未央
【從UnityURP開始探索遊戲渲染】專欄-直達 自發光的基本原理 $Cemissive=Memissive$ 自發光是物體表面主動發射光線的現象,在光照模型中通常作為獨立於外部光源的附加項。其核心特點是不受其他光照影響,但可以影響周圍環境。 實現流程 定義發射顏色和強度:確定基礎發光顏色和亮度 紋理採樣 可選:使用紋理控制發射圖案 HDR處理:支持高於1.0的亮度值
昵稱 SmalBox
【從UnityURP開始探索遊戲渲染】專欄-直達 漫反射基本流程 漫反射遵循蘭伯特定律(Lambert's Cosine Law),其核心流程如下: 法線準備:獲取表面法線向量(通常來自頂點法線或法線貼圖) 光源方向計算:確定光源到表面點的單位方向向量 點積運算:計算法線向量與光源方向的點積(N·L) 能量約束:使用saturate函數將結果限制在[0,1]範圍
昵稱 SmalBox
【從UnityURP開始探索遊戲渲染】專欄-直達 蘭伯特漫反射的能量守恆性 能量守恆基本原理 在物理正確的渲染中,能量守恆要求: 表面反射的光能總量 ≤ 入射光能 漫反射+高光反射 ≤ 1.0 沒有能量憑空產生或消失 經典蘭伯特模型的能量守恆問題 傳統蘭伯特漫反射公式: $漫反射 = 表面反照率 × max(0, N·L)$ 不守恆的原因: 缺乏歸一化因子:
昵稱 SmalBox
如何在Unity中的一個場景進行分屏,並將分屏的兩個攝像機設置不同的天空盒 問題分為兩個:1.分屏,2.設置不同天空盒 1.分屏 在Unity中創建兩個攝像機 或者將主攝像機賦值一份 保持場景的所有攝像機有且僅有一個Audio Listener 修改ViewPortRect 以及depth 參數如圖 其中 x,y為顯示畫面左下角比例位置,x中0為最左,0.5為居中,1為最右側,y
昵稱 Lin*Mu
【從UnityURP開始探索遊戲渲染】專欄-直達 光照衰減的基本原理 在物理正確的光照模型中,衰減需要遵循兩個基本定律: 平方反比定律:光強與距離平方成反比 (I ∝ 1/r²) 餘弦定律:表面接收的光強與入射角餘弦成正比 (I ∝ cosθ) 經典蘭伯特模型的衰減處理 標準蘭伯特公式 $漫反射 = 表面顏色 * 表面反照率 * max(0, N·L)$ 衰減實現分析
昵稱 SmalBox
【從UnityURP開始探索遊戲渲染】專欄-直達 高光反射的基本流程 經驗光照模型中的高光反射通常遵循以下流程: 入射光計算:確定光源方向和強度 視角向量計算:確定觀察者方向 反射向量計算:根據表面法線計算理想反射方向 高光強度計算:使用特定模型計算高光反射強度 最終合成:將高光反射與漫反射和環境光結合 主要高光反射模型及實現 Phong模型 (1975)
昵稱 SmalBox
【從UnityURP開始探索遊戲渲染】專欄-直達 環境光的基本處理流程 $Cambient$ 環境光采集:獲取場景環境光照信息 環境光遮蔽:計算環境光遮擋關係 環境光反射:根據材質屬性反射環境光 環境光混合:與其他光照成分合成最終顏色 主要環境光模型及實現 恆定環境光(Constant Ambient) 實現原理: $環境光 = 環境光顏色 ×
昵稱 SmalBox
Unity一直在搞事相信大家都知道,特別是unity.cn,之前都還在我的容忍範圍之內,直到上半年他們事實性的宣佈不會支持Unity 6之後,我就決定換引擎了。 至於換哪個引擎着實挑選了一段不短的時間(實際上我“物色”引擎從23年Runtime Fee事件之後就開始了)。首先被排除的是Unreal,這玩意兒我玩不起。之後我在幾個支持C#的引擎裏面挑選,最後鎖定在三個引擎上面:Stride,Flax
昵稱 horeaper
太長不看:https://github.com/horeaper/UnigineMyraIntegration 什麼是Myra? 這個是Myra:https://github.com/rds1983/Myra 熟悉WPF/Avalonia/Silverlight/UWP開發的朋友肯定一眼就能看出來這個UI庫用的是什麼佐料了。它當然不是完整的WPF實現,對於遊戲開發而言也沒必要用完整的WPF,太重了
昵稱 horeaper
【從UnityURP開始探索遊戲渲染】專欄-直達 PBR(Physically Based Rendendering)的核心內容與BRDF應用 PBR是一種基於物理光學原理的渲染框架,其核心是通過物理可測量的材質屬性和真實的光照計算規則實現跨環境一致的真實感渲染。 PBR四大核心支柱 模塊 作用 關鍵參數 材質參數系統
昵稱 SmalBox
【從UnityURP開始探索遊戲渲染】專欄-直達 雙向反射分佈函數 Bidirectional Reflectance Distribution Function 解釋當光線從某個方向照射到一個表面時,有多少光線被反射、反射方向有哪些。BRDF大多使用一個數學公式表示,並提供一些參數來調整材質屬性。 BRDF(雙向反射分佈函數)是計算機圖形學和光學中描述物體表面反射特性的核心數學模型,其定義
昵稱 SmalBox
【從UnityURP開始探索遊戲渲染】專欄-直達 URP BRDF漫反射方法對比 方法名稱 數學公式 特點 性能消耗 適用場景 Lambert $L_d = k_d * max(0, N·L)$ 經典模型,能量不守恆 ★☆☆ 移動端低配 Half-Lambert $L_d =
昵稱 SmalBox
【從UnityURP開始探索遊戲渲染】專欄-直達 微表面理論的核心概念 微表面理論是一種物理渲染模型,它將宏觀表面視為由無數微觀幾何細節(微表面)組成的複雜結構。這一理論是Unity URP中PBR(基於物理的渲染)實現的基礎。 基本假設 微觀結構: 宏觀表面由大量隨機方向的微觀小平面組成 每個微表面都是完美的鏡面反射體 微表面尺度小於單個像素但大於光波長
昵稱 SmalBox
【從UnityURP開始探索遊戲渲染】專欄-直達 GGX的全稱與基本概念 GGX的全稱:Ground Glass X (或 Generalized Trowbridge-Reitz Distribution) 首次提出:Walter等人在2007年發表的論文《Microfacet Models for Refraction through Rough Surfaces》中提出 GGX
昵稱 SmalBox
【從UnityURP開始探索遊戲渲染】專欄-直達 Beckmann分佈函數原理 Beckmann分佈函數是最早用於微表面模型的法線分佈函數之一,由Paul Beckmann在1963年的光學研究中首次提出。它描述了表面微平面法線分佈的統計規律,是計算機圖形學中最早的物理準確NDF實現。 數學原理 Beckmann分佈函數的標準形式為: $D_{Beckmann}(h)=\frac1{πm2(
昵稱 SmalBox
【從UnityURP開始探索遊戲渲染】專欄-直達 幾何遮蔽的基本流程 幾何遮蔽(G)在BRDF中用於模擬微表面間的自陰影和遮蔽效應,其計算流程通常分為三個步驟: 遮蔽項計算:光線入射方向的遮擋概率 陰影項計算:視線方向的遮擋概率 聯合計算:將兩者結合形成完整的幾何函數 主要幾何遮蔽模型 1. Cook-Torrance模型 原理: 基於V形微槽假設 使用簡單的
昵稱 SmalBox
有些情況下我們會對字段做泛型封裝,使其支持OnChange、IsDirty等統一的功能擴展,例如: IObservablefloat hitPoint; 而有些字段有掛載修改器的需求,修改器若使用lambda則對序列化不友好,因此考慮自行封裝四則運算供修改器 給原始數值進行修改,但C#早期沒有四則運算的接口(Interface)。網上的dynamic動態類型做法對多平台也不太好。 (注:使
昵稱 HONT
Hi 遊戲圈的小夥伴們~2025年4月11-12日,遊戲行業的年度盛事——GGS 2025全球遊戲峯會即將在廣州新世界酒店盛大啓幕! 龍智將攜手全球領先的版本控制解決方案提供商Perforce Software共同亮相A07展位,為與會觀眾帶來前沿的版本控制系統Perforce P4(原Helix Core),以及專為遊戲行業量身打造的遊戲開發及管理解決方案。 參展速遞 :龍智×Perforce
昵稱 龍智DevSecOps
現場對話 遊戲開發團隊最頭疼的版本管理問題是什麼?SVN宕機?Git倉庫爆炸?還是美術資源管理一團亂? 在4月11-12日的GGS 2025全球遊戲峯會上,Perforce中國授權合作伙伴-龍智的銷售和技術支持團隊,與行業小夥伴們聊了聊遊戲開發中的版本管理與協作難題。 從傳統工具的力不從心,到AI時代的效率革命,遊戲團隊如何用對工具、加速開發?今天,我們一起來聽聽龍智專家銷售-袁傑的獨家見解~
昵稱 龍智DevSecOps
現場對話 隨着遊戲美術資源突破幾十TB量級,傳統的版本管理工具逐漸力不從心——如何高效管理海量的數字資產?如何保障團隊協作流暢?又如何應對AI時代快速迭代的版本管理需求? 在4月11-12日的GGS 2025全球遊戲峯會上,Perforce中國授權合作伙伴-龍智的技術支持專家巫曉光分享了他的見解,詳細介紹了Perforce P4(原Helix Core)如何以高性能存儲、精細化權限控制和全球協作架
昵稱 龍智DevSecOps