游戏环境打造全攻略
1. 光照设置优化
首先,从
Edit ➤ Project Settings ➤ Quality, Shadows
,将
Shadow Distance
设置为 60。在 Beast 中使用导入的光照贴图时,光照贴图必须是
.exr
文件类型,且其 alpha 通道包含照明数据。可以通过在
Lightmapping
窗口中将替换贴图拖到现有贴图上来替换 Beast 渲染的光照贴图。若贴图尚未烘焙,需在
Maps
部分增加数组大小,并为相应对象分配正确的贴图索引。若使用单张贴图且不使用动态光照,要将
Mode
设置为
Single Lightmaps
。
对于自定义着色器的恢复,当神庙处于动态阴影范围内时材质效果良好,但替换光照贴图版本后质量下降。对于内神庙,关闭
Static
以防止生成光照贴图;对于外神庙和其他带有预渲染光照贴图的结构,要让对象投射阴影但不计算新的光照贴图,需更改光照贴图中的
Scale
:
1. 再次打开
Lightmapping
窗口。
2. 选择外神庙。
3. 在
Object
选项卡上,将光照贴图中的
Scale
设置为 0。
4. 对神龛、石碑、外墙、圆顶、Harvey、Gertrude 和废墟石重复此操作。
之后,将
Temple Outside 1
材质添加回神庙,并将灯光的阴影强度设置为约 0.6。
在重新烘焙场景前,可增大地形阴影大小:
1. 打开
Lightmapping
窗口。
2. 选择地形并将其
Map Size
设置为 2048,使树木阴影有更高分辨率。
3. 在贴图预览上方点击
Clear
,删除现有光照贴图。
4. 烘焙场景。
5. 将其余对象的光照贴图大小设置为 0,仅保留地形进行烘焙。
6. 确保地形对象使用光照贴图索引 0。
7. 在
Bake
部分,将质量再次设置为
High
。
8. 点击
Bake Scene
。
9. 关闭
Lightmapping
窗口。
10. 保存场景和项目。
2. 进入神庙下层
光照贴图处理好后,开始探索神庙内部。神庙有一部分在地下,当前 Unity 的地形生成系统不允许在地形上挖孔,可在进入建筑后关闭地形组件,但难以禁用和启用地形碰撞器,且重新启用地形时可能有延迟。可使用一些解决方法,如使用着色器、强制绘制顺序、拼接多个地形贴图等。本项目采用玩家进入神庙时降低地面的方法。
要进入神庙下层,需触发楼梯动画:
1. 选择
TempleStairs
对象。
2. 在
Animation
组件中,开启
Play Automatically
。
3. 点击
Play
,等待楼梯降下后进入神庙。
若楼梯难爬,可调整
Character Controller
组件的
Step offset
,若不行可将坡度限制设置为 90 度,但玩家可能爬上神庙侧面。这里可将楼梯的
Mesh Collider
设置为
Convex
:
1. 仍选中楼梯对象,在
Mesh Collider
组件中开启
Convex
,再次尝试爬楼梯。
2. 停止
Play
模式并使更改永久生效。
若使用 Pro 且采用延迟光照,进入神庙可能太暗。可通过更改灯光的
Culling Mask
来改变光照:
1. 选择
Sun for Lightmaps
对象。
2. 在其
Culling Mask
中取消勾选
TransparentFX
。
3. 复制灯光并命名为
Sun for Temple
。
4. 将阴影类型设置为
None
。
5. 勾选
Everything
,然后取消勾选
Default
。
6. 将光照贴图设置为
RealtimeOnly
。
7. 选择
Temple of Tizzleblat
并将其分配到
TransparentFX
层。
8. 对
Door Upper
和
Door Lower
重复此操作。
9. 点击
Play
并探索神庙内部。
在神庙内室遇到地形阻挡通道的问题,可创建一个简单的脚本来开关地形:
1. 在
My Scripts
文件夹中创建一个新脚本。
2. 命名为
Deactivate
并在脚本编辑器中打开。
3. 添加以下代码:
var object : GameObject;
function OnMouseDown () {
if (object. activeSelf == false) object.SetActive(true);
else object.SetActive(false);
}
- 保存脚本。
-
将
Deactivate脚本添加到神庙守护者之一 Harvey 上。 -
将地形对象拖到
Object字段中。 -
点击
Play。 - 探索神庙内部。
- 返回神庙台阶处选择 Harvey,地形消失。
- 探索神庙其余内部区域。
- 出去后再次点击 Harvey,重新激活地形。
-
停止
Play模式。 - 从 Harvey 上移除脚本。
3. 地形下降设置
为了解触发系统的工作原理,先关闭外神庙:
1. 选择外神庙并停用它。
2. 将场景视图更改为
Top/orthographic
并放大内神庙(
Temple of Tizzleblat
对象)。
3. 在层次视图中找到
Trigger Group
并选择它。
4. 将场景视图设置为
Top
和
ortho
以获得良好视角。
地形触发器是简单的碰撞器,设置为
Is Trigger
。采用双触发器设置可避免玩家进出触发器时出现无地形的问题。
接下来创建地形管理脚本:
1. 在
Adventure Scripts
文件夹中创建一个新脚本。
2. 命名为
TerrainManager
。
3. 在编辑器中打开。
4. 添加以下变量:
var showTerrain = true; // true means show on enter, false means hide on enter
internal var terrain : GameObject;
internal var terrainPosY : float;
-
添加
Start函数:
function Start () {
terrain = GameObject.Find("Terrain");
terrainPosY = terrain.transform.position.y ; // get terrain y pos
}
-
添加
ManageTerrain函数:
function ManageTerrain () {
if (showTerrain) {
terrain.transform.position.y = terrainPosY; // restore the terrain
}
else {
terrain.transform.position.y = terrainPosY - 20; // drop the terrain
}
}
-
添加
OnTriggerEnter函数:
function OnTriggerEnter () {
ManageTerrain ();
}
- 保存脚本。
然后将脚本添加到触发器上:
1. 将新的
TerrainManager
脚本拖到每个
Terrain Trigger On
和
Off
对象上。
2. 选中其中一个对象,在
Inspector
中点击
Apply
更新预制件。
3. 对于
Terrain Trigger Off
对象,在
Inspector
中将其
Show Terrain
参数设置为
false
。
4. 对于
Terrain Trigger On
对象,在
Inspector
中将其
Show Terrain
参数设置为
true
。
最后测试地形下降功能:
1. 打开外神庙并调整场景视图以查看地形下降。
2. 点击
Play
并进入神庙。
3. 测试触发器并观察场景视图。
4. 神庙入口装饰
为避免玩家在隐藏地形前看到神庙内的地形,以及在神庙内时看到外面的地形,可在入口处添加悬挂的布:
1. 停用
TempleStairs
。
2. 找到
Entry Hanger
组并激活它。
3. 点击
Play
,布会皱成一团,因为尚未分配吊架。
4. 停止
Play
模式。
5. 选择一块布,在
Interactive Cloth
组件底部将其
Attached Colliders
数组大小设置为 1。
6. 将
Entry Hanger
对象指定为其元素 0。
7. 对另一块布重复此操作。
8. 再次点击
Play
,布会轻轻晃动。
9. 关闭
Play
模式并重新激活
TempleStairs
。
10. 点击
Play
,驾车穿过布进入神庙,从后面看布时发现背面无面,需要使用双面着色器。
标准的 Unity 着色器中,只有粒子系统和树叶的着色器是双面的,不适合神庙入口的布。可通过在现有着色器中添加
Cull Off
来使其变为双面:
1. 在
Structures ➤ Custom Shaders
文件夹中找到
DS BumpSpec
着色器。
2. 打开着色器。
3. 在
Tags{ "RenderType"="Opaque" }
行之后添加
Cull Off
。
4. 保存着色器。
5. 点击
Play
再次测试布,此时布背面可见。
5. 创建简单的体积光效果
在神庙内室,使用
Line Renderer
创建简单的体积光效果:
1. 从神庙组中选择吊灯并聚焦。
2. 创建一个新的空游戏对象。
3. 命名为
Volume Light Effect
。
4. 从
Component ➤ Effects
添加
Line Renderer
组件。
5. 取消勾选
Use World Space
。
6. 在
Positions
中,将其元素 1 的
Z
设置为 0,
Y
设置为 -10。
7. 缩放回能看到完整对象。
8. 在
Parameters
中,将其起始宽度和结束宽度设置为 4。
9. 将
Fairy Dust
材质添加到其
Materials
元素 0 中。
10. 在起始和结束颜色中,将其 Alpha 值调整为 255,颜色调整为浅金色。
11. 在项目视图中选择
Fairy Dust
材质。
12. 复制材质并命名为
VolumeRay
。
13. 将新材质移动到一个游戏材质文件夹中。
14. 将新材质加载到
Line Renderer
中。
15. 将材质的粒子纹理更改为
Volumetric
纹理。
6. 进入阳台与神龛设置
要进入阳台,需为玩家打开一扇秘密通道门:
1. 在层次结构中选择
Door Upper
并双击在场景视图中聚焦。
2. 将其
Z
值设置为 78。
3. 点击
Play
,通过秘密通道前往阳台。
4. 停止
Play
模式。在场景视图中,需切换
FX
按钮以查看发光对象的发光效果。
除了神庙,还导入了六个主题神龛:光神龛、水神龛、地神龛、植物神龛、音乐神龛和钥匙神龛。每个神龛都有自己独特的符号,玩家需利用其中一些神龛的功能或符号推动游戏进程。后续会为一些神龛添加新效果,并将之前创建的对象和功能融入其他神龛。
整个游戏环境的打造过程涉及到光照、地形、入口装饰、特效等多个方面,通过一系列的设置和调整,能够为玩家营造出一个更加逼真和有趣的游戏世界。
游戏环境打造全攻略
7. 技术点分析与流程总结
为了更清晰地理解整个游戏环境打造的过程,下面对关键技术点和操作流程进行总结:
光照设置优化流程
| 步骤 | 操作内容 |
|---|---|
| 1 |
从
Edit ➤ Project Settings ➤ Quality, Shadows
,设置
Shadow Distance
为 60
|
| 2 |
处理导入光照贴图(
.exr
文件类型,alpha 通道含照明数据),按需替换、分配索引等
|
| 3 |
恢复自定义着色器,调整外神庙等对象光照贴图
Scale
为 0
|
| 4 |
添加
Temple Outside 1
材质,设置灯光阴影强度为 0.6
|
| 5 | 增大地形阴影大小,重新烘焙场景,保存项目 |
进入神庙下层操作流程
| 步骤 | 操作内容 |
|---|---|
| 1 |
触发楼梯动画,选择
TempleStairs
对象,开启自动播放
|
| 2 |
若楼梯难爬,调整
Mesh Collider
为
Convex
|
| 3 |
更改灯光
Culling Mask
解决光照过暗问题
|
| 4 |
创建
Deactivate
脚本控制地形开关
|
地形下降设置流程
| 步骤 | 操作内容 |
|---|---|
| 1 | 关闭外神庙,查看触发器位置 |
| 2 |
创建
TerrainManager
脚本管理地形
|
| 3 | 将脚本添加到触发器,设置参数 |
| 4 | 测试地形下降功能 |
神庙入口装饰流程
| 步骤 | 操作内容 |
|---|---|
| 1 |
停用楼梯,激活
Entry Hanger
组
|
| 2 |
设置布的
Attached Colliders
,使其正常悬挂
|
| 3 | 修改着色器为双面,解决布背面无面问题 |
创建体积光效果流程
| 步骤 | 操作内容 |
|---|---|
| 1 |
选择吊灯,创建
Volume Light Effect
对象
|
| 2 |
添加
Line Renderer
组件,设置参数
|
| 3 | 调整材质和纹理 |
进入阳台与神龛设置流程
| 步骤 | 操作内容 |
|---|---|
| 1 |
打开
Door Upper
,设置
Z
值
|
| 2 | 通过秘密通道进入阳台 |
| 3 | 后续处理神龛相关功能 |
下面是整个游戏环境打造的 mermaid 流程图:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
A([开始]):::startend --> B(光照设置优化):::process
B --> C(进入神庙下层):::process
C --> D(地形下降设置):::process
D --> E(神庙入口装饰):::process
E --> F(创建体积光效果):::process
F --> G(进入阳台与神龛设置):::process
G --> H([结束]):::startend
8. 常见问题与解决方案
在游戏环境打造过程中,可能会遇到一些常见问题,下面为大家提供相应的解决方案:
光照相关问题
- 问题 :光照贴图烘焙效果不佳,阴影模糊或光照不均匀。
-
解决方案
:检查光照设置,如
Shadow Distance、地形阴影大小等参数是否合适;尝试提高烘焙质量,重新烘焙场景。
地形相关问题
- 问题 :地形生成系统无法挖孔,进出建筑时地形处理困难。
- 解决方案 :采用降低地面、拼接地形贴图等方法;使用脚本控制地形的显示和隐藏。
模型与材质相关问题
- 问题 :模型材质显示异常,如布的背面无面。
-
解决方案
:使用合适的着色器,如添加
Cull Off使着色器变为双面。
动画与碰撞相关问题
- 问题 :楼梯难爬,玩家移动异常。
-
解决方案
:调整
Character Controller组件参数,或设置Mesh Collider为Convex。
9. 总结与展望
通过上述一系列的操作和设置,我们成功打造了一个丰富、逼真的游戏环境。从光照的精细调整到地形的巧妙处理,再到各种特效和装饰的添加,每一个环节都为游戏的整体体验增色不少。
在未来的游戏开发中,我们可以进一步拓展和优化这个游戏环境。例如,为神龛添加更多复杂的交互功能,让玩家与神龛之间有更深入的互动;优化体积光效果,使其更加逼真和自然;尝试更多的地形处理方法,解决目前存在的一些局限性。
同时,我们也可以将这些技术和经验应用到其他类型的游戏开发中,不断探索和创新,为玩家带来更多精彩的游戏体验。希望本文能够对游戏开发者们有所帮助,让大家在游戏环境打造的道路上少走弯路,创造出更加出色的游戏作品。
超级会员免费看
8

被折叠的 条评论
为什么被折叠?



