3D游戏编程与设计作业四

一、基本操作演练

  • 下载 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图(盗用的)
    在这里插入图片描述

    解释一下创建的几个类:

  1. 动作基类:public class SSAction : ScriptableObject{}
  2. 简单动作实现类: public class SSMoveToAction : SSAction {}
  3. 组合动作实现类: public class SequenceAction: SSAction, ISSActionCallback{}
  4. 动作管理基类:public class SSActionManager: MonoBehaviour, ISSActionCallback{}
  5. 以及,我们还要建立一个动作事件接口:public interface ISSActionCallback{}
  • 动作管理
  1. 定义动作基类:使用 virtual 申明虚方法,通过重写实现多态。这样继承者就明确使用Start 和 Update 编程游戏对象行为,利用接口实现消息通知,避免与动作管理者直接依赖。

  2. 简单动作实现:让 Unity 创建动作类,确保内存正确回收。使用多态,C++ 语言必申明重写,Java则默认重写。

  3. 组合动作实现:创建一个动作顺序执行序列,-1 表示无限循环,start 开始动作。然后执行当前动作。收到当前动作执行完成,推下一个动作,如果完成一次循环,减次数。如完成,通知该动作的管理者。

  4. 动作接口定义:定义了事件处理接口,所有事件管理者都必须实现这个接口,来实现事件调度。所以,组合事件需要实现它,事件管理器也必须实现它。

  5. 动作管理基类:创建 MonoBehaiviour 管理一个动作集合,动作做完自动回收动作。该类演示了复杂集合对象的使用。提供了运行一个新动作的方法。该方法把游戏对象与动作绑定,并绑定该动作事件的消息接收者。执行改动作的 Start 方法。

    代码传送门
    演示视频

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值