一、基本操作演练
- 下载 Fantasy Skybox FREE, 构建自己的游戏场景
首先,在Asset Store中搜索Fantasy Skybox FREE,将其import到我们的项目中
接着,在Main Camera 对象中添加部件 Rendering -> Skybox
然后,在Fantasy Skybox FREE的Materials中找到我们想要的天空盒
最后,将其拖到Main Camera上即可
最终效果图如下
- 写一个简单的总结,总结游戏对象的使用
通过这几周对于游戏对象的学习,目前对游戏对象有了一定的了解和认识。
大体来说,游戏对象就是所有其他组件的容器。如果在此基础上再细致一点的划分,我认为在unity中游戏对象可分为以下两种:
(1)Camer、Light等辅助对象
(2)Object等游戏实体对象
其中,辅助对象如Camera是让我们看到各种游戏场景的媒介,light则对游戏中的光影进行调节,它们对于场景的设置有一定的辅助。同时可以调整像transform等属性,从而更好的利用这些工具。
而游戏实体对象,常常充当实际能看到的场景、角色、物品等,一般是用于预制的设计等。同时通过脚本对其相关属性的改变,可以实现像运动等操作。
二、编程实践
-
牧师与魔鬼 动作分离版
【2019新要求】:设计一个裁判类,当游戏达到结束条件时,通知场景控制器游戏结束
这次作业的就是在上次的基础上进行改进,主要改进的思路就是:设计一个抽象类作为游戏动作的基类;设计一个动作管理器类管理一组游戏动作的实现类;通过回调,实现动作完成时的通知。
我们先来看UML图(盗用的)
解释一下创建的几个类:
- 动作基类:public class SSAction : ScriptableObject{}
- 简单动作实现类: public class SSMoveToAction : SSAction {}
- 组合动作实现类: public class SequenceAction: SSAction, ISSActionCallback{}
- 动作管理基类:public class SSActionManager: MonoBehaviour, ISSActionCallback{}
- 以及,我们还要建立一个动作事件接口:public interface ISSActionCallback{}
- 动作管理
-
定义动作基类:使用 virtual 申明虚方法,通过重写实现多态。这样继承者就明确使用Start 和 Update 编程游戏对象行为,利用接口实现消息通知,避免与动作管理者直接依赖。
-
简单动作实现:让 Unity 创建动作类,确保内存正确回收。使用多态,C++ 语言必申明重写,Java则默认重写。
-
组合动作实现:创建一个动作顺序执行序列,-1 表示无限循环,start 开始动作。然后执行当前动作。收到当前动作执行完成,推下一个动作,如果完成一次循环,减次数。如完成,通知该动作的管理者。
-
动作接口定义:定义了事件处理接口,所有事件管理者都必须实现这个接口,来实现事件调度。所以,组合事件需要实现它,事件管理器也必须实现它。
-
动作管理基类:创建 MonoBehaiviour 管理一个动作集合,动作做完自动回收动作。该类演示了复杂集合对象的使用。提供了运行一个新动作的方法。该方法把游戏对象与动作绑定,并绑定该动作事件的消息接收者。执行改动作的 Start 方法。