自制游戏 (Unknown Mssing Game)十

Sally ·
更新时间:2024-11-13
· 595 次阅读

我规划了一下所有的代码,使其写代码非常容易,基本就是无脑写了,下面我说一下主要的部分HomeScene:

这个脚本我传到了GitHub上了,它是控制这里的脚本:

这个地方也是第一个主要场景,我目前也只是写完了这个场景里的逻辑控制,这个脚本的代码主要长这样:

int m_i = 0; // 控制流程的标志,一般就是控制游戏进程的,非常重要 string[] strs = {"你好,欢迎进入工作室~", // str[0] "我是你的私人助理Comp", "你可以左右拉动屏幕来获取工作室的全貌", "现播报昨日工作进度和当前未处理事项:", "昨天是休息日,没有工作进度", "当前有一封未读邮件,发件人为Lee", "[玩家操作选择] 选择1 : Lee是谁?;选择2 :邮件内容是什么?", // strs[6] "Comp,Lee是谁,为何会给我发邮件?邮件内容是什么?", // strs[7] ...其他字符串 GLabel m_dialog; // 显示字符串的面板 GGroup m_mask_0; // 遮罩组 GGroup m_mask_1; // 遮罩组 GGroup m_personalData; GGroup m_mail; // 遮罩组 ...其他控件 void Start() // 主要用来完成初始化和控件获得 { UIPanel panel = gameObject.GetComponent(); GComponent view = panel.ui; // 整个UI的集合 // 上面的对话框 m_dialog = view.GetChild("Dialog").asLabel; m_dialog.text = ""; GButton nextButton = view.GetChild("NextButton").asButton; // 点击按钮文字继续走的按钮 nextButton.onClick.Add(nextButton_Click); // 获取邮箱,是一个通用控件 m_mail = view.GetChild("Mail").asGroup; m_mail.visible = false; GButton mailCloseButton = view.GetChild("MailCloseButton").asButton; ...其他初始化控件代码 void nextButton_Click() { if (m_i =7) && (m_i<10)){ ControlDialogue(); ...控制“点击继续”按钮,用来控制行进逻辑 void button_1_1_Click() { } void button_1_2_Click() { } void button_1_1_1_Click(){ m_mail.visible = true; // TODO:后面接2的剧情 } void button_1_1_2_Click() { m_mail.visible = true; // TODO:后面接2的剧情 } ...其他按钮绑定的逻辑 void Update() 这个函数以及下面函数是控制字幕的逐个出现的 void ControlDialogue(){ void OnFinish()

其中,m_i可谓重中之重,就是用它来代表游戏进度,它实际上是strs的下标,用来控制说哪句话,但是strs并不是仅仅只有话,有些字段只是一个占位符,是mask的占位符,用来让用户点击按钮选择。例如:

"搜寻结束,Lee是您的大学同学,他的本科生导师和您CURE项目的导师是同一个人,Lee的所有资料已经精简成简历,请问是听读还是阅读?", "[玩家操作选择] 选择1.1 :(更喜欢纸质阅读);选择1.1 :阅读", // strs[10] "显示档案资料系统中Lee的个人资料页,玩家点击关闭资料页窗口后。", // strs[11] "您已阅读完毕,请问是否需要阅读邮件内容?", // strs[12] "[玩家操作选择] 选择1.1.1 :看看吧 ; 选择1.1.1 :无事不登三宝殿 ; 选择1.1.2:不看", // strs[13] "直接打开邮件系统,显示邮件内容,玩家点击关闭邮件系统后。", // strs[14] "CURE项目竟然被做出来了,导师没有失踪,这几年她自己一个人完成了所有研究吗?", // strs[15]

我在每个需要转折的地方都做了一个注释,代表它是需要转折,实际上,这个strs完全照搬了脚本文档:

可见顺序是完全一样的,直接复制粘贴并稍作修饰就是代码了。

关于控件的命名则完全采用了脚本文档中的数字命名,按钮用最后一个数字作为区分,mask用前面的数字作为区分,例如:

[玩家操作选择] 选择1.1.1 :看看吧 ; 选择1.1.2 :无事不登三宝殿 ; 选择1.1.3:不看

这个选择界面,命名为Mask_1_1,里面有三个button,分别为:Button_1_1_1, Button_1_1_2, Button_1_1_3, 在控件获取的时候代码如下:

m_mask_1_1 = view.GetChild("Mask_1_1").asGroup; m_mask_1_1.visible = false; GButton button_1_1_1 = view.GetChild("Button_1_1_1").asButton; button_1_1_1.onClick.Add(button_1_1_1_Click); GButton button_1_1_2 = view.GetChild("Button_1_1_2").asButton; button_1_1_2.onClick.Add(button_1_1_2_Click); GButton button_1_1_3 = view.GetChild("Button_1_1_3").asButton; button_1_1_3.onClick.Add(button_1_1_3_Click);

基本上就是获取完控件后给按钮添加一个click函数,作为点击函数,而点击函数也只是在后面加上_click, 比较简单。

最终,它控制的就是如下界面:

而逻辑控制是怎么样的呢?如下:

void nextButton_Click() { if (m_i =7) && (m_i= 12) && (m_i = 15) && (m_i < 17)){ ControlDialogue(); } else if(m_i == 17){ openMail(); } }

就是通过判断m_i,也就是游戏进程,来控制语句的播放,mask的展开和关闭,邮箱的展开关闭等。


作者:才大难为用



unknown

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章