1、基本操作演练【建议做】
- 下载 Fantasy Skybox FREE, 构建自己的游戏场景
- 下载后在Package Manager中进行管理,选择需要的素材import。
- 课程网站中是自建天空盒,下载的Fantasy Skybox FREE中已有可用的天空盒,在MainCamera中新增一个组件Skybox,选择一个素材中的天空盒,如下图。
- 新建一个Terrain,点击Paint Terrain绘制地形。
- 新建一个Material,设置成深绿色,在Terrain Settings中,找到Basic Terrain的Material,拖入新建的Material,把地形的基色设置成深绿色。
- 点击Paint Trees种树,点击Edit Trees…->Add Tree,选择Fantasy Skybox FREE中已有的树prefab,点击Add。然后就可以在地形上点击画树。
- 点击Paint Details,点击Edit Details…->Add Grass Texture,选择Fantasy Skybox FREE中已有的草,点击Add。然后就可以在地形上点击画草。
- 效果如下图。
- 写一个简单的总结,总结游戏对象的使用
游戏对象包括:摄像机、灯光、地形、空对象、3d对象、2d对象等。游戏对象具有各式属性,它们的功能是通过脚本来实现的。之前学习了如何自己创建游戏对象,这次构建游戏场景更多的是下载、导入和使用商店中已有的对象,商店中的资源非常多,使用也很方便,使用这些已有的资源比全部自己完成会更高效。
2、编程实践
- 牧师与魔鬼 动作分离版
- 【2019开始的新要求】:设计一个裁判类,当游戏达到结束条件时,通知场景控制器游戏结束
- 增加Actions.cs。主要的代码来自于课程网站,MySceneActionManager类负责游戏的具体操作。
- 在Model.cs中增加Judge类,并且负责原check函数的功能。IUserAction中删除Check函数。
public class Judge {
LandModel start_land;
LandModel end_land;
BoatModel boat;
public Judge(LandModel start_,LandModel end_,BoatModel boat_)
{
start_land = start_;
end_land = end_;
boat = boat_;
}
public int Check()
{
int start_priest = (start_land.GetRoleNum())[0];
int start_devil = (start_land.GetRoleNum())[1];
int end_priest = (end_land.GetRoleNum())[0];
int end_devil = (end_land.GetRoleNum())[1];
if (end_priest + end_devil == 6)
return 2;
int[] boat_role_num = boat.GetRoleNum();
if (boat.GetBoatSign() == true)
{
start_priest += boat_role_num[0];
start_devil += boat_role_num[1];
}
else
{
end_priest += boat_role_num[0];
end_devil += boat_role_num[1];
}
if (start_priest > 0 && start_priest < start_devil)
{
return 1;
}
if (end_priest > 0 && end_priest < end_devil)
{
return 1;
}
return 0;
}
}
- 在Controllor.cs中,增加Judge类型变量judge,在LoadResources函数将调用原check函数的地方修改成judge.check(),删掉了原先的check函数。
具体代码见github:传送门
效果图如下:
3、材料与渲染联系【可选】
- Standard Shader 自然场景渲染器。
- 阅读官方Standard Shader手册 。
- 选择合适内容,如Albedo Color and Transparency,寻找合适素材,用博客展示相关效果的呈现
- 新建一个球形对象,新建一个Material。
- 首先改变Albedo,选择绿色,将Material拖到球形对象上,效果如下,可以看到球形对象已经变成了绿色。
- 改变Transparency,首先要修改Rendering Mode为Transparent,然后修改Albedo中的A,可以看到下图中的球形对象的透明度已经变了。
- 声音
- 阅读官方Audio手册
- 用博客给出游戏中利用 Reverb Zones 呈现车辆穿过隧道的声效的案例
- 新建一个空对象。下载一个Engine Sound,并导入项目。
- 为空对象添加组件Audio Source,把音频拖进AudioClip,并选择Loop。
- 为空对象添加组件Audio Reverb Zone,将Reverb Preset选项改为Cave。