基于unity3D开发的墨客行游戏的脚本代码
主背包系统:点击后进入新界面,此页面可以实现对玩家在操纵各个人物所获取的保存下来的物品进行图标和名字的预览。点击对应物品后会出现对应的详细说明(说明界面嵌在主背包界面内),在说明界面内可以看到该物品的简介、来源、作用、(若是与分析有关的物品还要标注是否已分析,可分析物品呈现简略介绍,已分析物品呈现详细介绍)(山河碎片可以在背包中点击使用后解锁并转入其所对应的山河的位置)。
成就系统:点击后进入新界面,该界面将成就纵向排列,此页面可以预览各个成就的名字、简略进度、是否完成和图标。点击成就会出现该成就的详细说明(可以以展开的形式表现出来),在说明界面可以看到该成就的说明(可以是对成就名的说明,可以是玩一些梗,也可以是对玩家或游戏的调侃)、完成条件、详细进度、完成后的奖励。
商店系统:作为经济唯一的支出渠道,点击后进入新界面,此界面可以实现对商品名称、图标和价格的预览和玩家资金的数量呈现,商品分为人物与山河碎片。点击对应商品会出现该商品的详细说明(说明子界面嵌在商品界面内),在人物商品界面内会呈现该人物的价格、人物的立绘(模型),人物简介,人物对应地图内可学习的诗词数量,可获取的山河碎片数量,可分析物品数量和该角色对应游戏内部分地图的一张的预览;在山河碎片商品界面可以出现该碎片的价格、碎片所对应的位置(可以将山河地图在该界面中贴出来,并在地图上标记出该碎片对应的位置)、碎片的简略信息。
分析仪系统:点击后进入新的分析界面,该界面会已一个分析仪的图像为主,图像的适当的一个地方可以将该界面下部的横向分布的可分析物品(只呈现可分析物品的图标和名字)放在分析仪上进行分析,点击“分析”后出现新的子界面(该界面嵌在分析界面),在子界面中,会出现两种情况:一种是只获得分析后的物质,显示出其详细介绍;另一种是得到分析后的物质,显示出其详细介绍(为一些诗句典故等),并得到一个山河碎片该碎片存储在主背包中。已分析的物品不会在分析界面出现。
山河系统:山河系统是以一张中国地图为底板,将可互动的位置以点的形式标注在地图上(如果可以,在地图上加上该点的名字)。解锁该点需要对应的山河碎片。山河碎片的获取方式又两种:一种是分析可分析物品获得;一种是玩家在控制人物是完成人物或在地图中拾取获得。未解锁的点用暗点,新解锁的用闪烁的亮点,已解锁并完成探索的用常亮的点。点击未解锁的点会出现新的子页面(该页面嵌在山河页面),子页面中显示该处位置的名字和该山河碎片的获取方法(在角色游戏地图中获取或商店购买)。若玩家选择购买,则跳转到对应的商店界面进行购买,无论玩家是否购买成功,玩家退出购买界面后会直接返回之前的山河子界面。双击已解锁的点或在该已解锁点的子页面点击进入会进入新的页面【如果可以,在此转场中加入视角拉近的动画(如战地1的部署转场)】。新页面以山河所对应的景色的图片为底板,首先在图中适当的地方浮现出对此景的基础介绍,玩家点击任意处后,介绍隐去,与该景对应的诗浮现,然后进行教学过程(详见备注)。(在此界面中,始终有“返回上一步”的交互或用滚轮操控上一步与下一步)
玩家可以在教学完成后点击返回或随时点击右上角返回山河界面离开该场景回到山河界面【如果可以,加入过场动画(如战地1多人游戏时的士兵死亡返回部署界面时的转场)】
人物系统:每个人物都有独属于自己的一个世界,即大世界。在游戏界面,玩家可以点击中间的人物,来获取关于该人物的简介和其世界的部分信息【如可分析物品数量(几/ 几)、山河碎片数量(同上)、世界的部分地图预览】,玩家若想更换人物,点击中间人物的左侧人物或右侧人物即可将点中的人物切换到中间来,中间人物到边上去(大抵是个轮式转盘结构)。若是未解锁人物,点击“解锁”会跳转到商店对应的界面。
设置系统:内含主音量、游戏音效、背景音乐、文本是否自动播放、文本自动播放速度、退出游戏、新手引导、回归默认设置、
资金量:仅限于可看,让玩家知道有多少资金。
小地图:位于游戏页面左上角,呈方形,小地图点击后出现新的子页面(子页面嵌在游戏页面中),小地图中有主、支线任务的标记,在该页面内,包含标点、放大、缩小、拖动、定位主角所在位置、自动前往标点处。
任务栏:位于游戏页面左侧,呈方形,任务包含主线任务(以李白为例,主线任务为李白的生平)和支线任务(可互动物品的收集),纵向排列,有简介说明,任务进度。点击任务栏可以打开一个子页面(该页面嵌入游戏界面),在子页面内,玩家可以看到所有的主、支线任务和其详细介绍、进度等,并可以选择将选定的任务固定在任务栏上。
子背包:每个游戏角色有属于自己的子背包,各个子背包不互通,主背包有所有子背包的物品,但子背包只用于该角色的游戏内,储存该角色大世界的物品。点击背包后,打开新页面,在该页面内,玩家可以预览背包内的物品的简介、名字、图标,点击后可以打开该物品的详细介绍,玩家可以看到其详细介绍、作用等。
成就系统:同上。
资金量:同上。
设置:在游戏中,设置中会较主界面中的设置多出游戏界面设置,在该设置中玩家可以调节小地图、任务栏、背包、成就、资金量的大小、透明度、位置。还会多出一个返回主页面的按钮(和退出游戏区分开)。
共制作9个场景,分别为创建,加载,地图,码头,背包,任务,寺庙,亭子
其中使用的主要脚本及技术为:
对摄像机的控制脚本
通过控制摄像机的模型旋转速度,移动速度和镜头拉深度来控制摄像机的移动。 镜头拉深度的速度比例因子为10,并建立阻尼系数,产生缓冲作用。 鼠标滚轮拉伸,鼠标左键移动,右键旋转,并获取摄像机欧拉角,欧拉角表示按照坐标顺序旋转,比如angles.x=30,表示按x轴旋转30°,dy改变引起x轴的变化,来计算摄像机旋转。
摄像机与人物跟随脚本
通过计算初始物体的偏移量来判断相机与人物的位置。 初始物体与相机的偏移量=相机的位置 - 移动物体的偏移量 相机的位置 = 移动物体的位置 + 偏移量
任务界面脚本
脚本中包含对背包、地图、设置、人物界面、进入游戏、启动动画的控制。 在start方法中给属性赋值Green,让游戏一开始就显示主UI界面, 定义枚举,列举UI显示的情况,创建枚举变量, 定义属性给枚举变量赋值, 在给枚举变量赋值后调用UI显示方法,控制UI的显示, 定义UI显示的方法,通过枚举变量的值来判断。
背景音乐脚本
对背景音乐的控制 通过对Mixer变量的控制来达到对背景音乐的控制。 通过MasterVolume为我们暴露出来的Master的参数,来控制主音量的函数 通过MusicVolume为我们暴露出来的Music的参数,来控制背景音乐音量的函数 通过tonSoundEffectVolume为我们暴露出来的SoundEffect的参数,来控制音效音量的函数
对话框脚本
单例模式是通过关键字static和其他语句只生成对象的一个实例,保证输入的文字不会显示成默认的一行 Display or Hide 展示或隐藏对话窗口 声明一个string类型的数组,来表示对话的内容 声明一个对象currentLine用来实时追踪当前对话窗口正在进行数组中哪一行哪一个元素的文字内容输出 检测整个对话窗口在hierarchy的显示状态是否可见,只有对话窗口可见的时候,才能一句话接一句话跳转显示文字 对话长度不断累加,等于数组的长度,再次按下左键,窗口隐藏不可见 进入范围内后按下空格键之后的所有操作,方法传递了一个参数表示了不同人物不同npc的对话内容,将该参数赋值给dialoguelines,每次开始新的对话,都是从对话的第一句开始的 Remove "n-"将n-开头的内容显示在了ui画布nametext对象的text属性中 和委派任务的NPC完成对话之后,调用这个方法,判断任务是否已经完成了
备注:
-
大世界地图一般会分为3-4个区域,在区域与区域之间的连接处,玩家可以自愿参加学习测试,该测试的结果不影响玩家能否通过该区域。测试(以本区域所学习的内容为测试题库,未完成)满分为100分,根据不同的分,系统会给玩家不同的奖励(未完成)。
-
在大世界中的可互动物品分两种:一种是可拾取的物品,如山河碎片、可分析物品;另一种是引发作者作诗的景物,如地图背景上的山、楼、河等,该景物在互动后可以套山河形式进行教学。
-
在与NPC的互动过程中,可以让NPC与玩家玩一些简单游戏以做支线任务,在完成该游戏后可以给玩家一些奖励。
-
玩家必须完成该区域的主线任务才可以前往下一区域。
-
如果可以的话,做到实时存档,玩家随退随存,随进随继续。
-
若时间、人力充足,可以设计一些隐藏地图或彩蛋NPC。