早啊~oeasy 真是高产啊!
看到你这个AVG游戏我还挺亲切的,我这段再做个给小孩玩的拼图游戏。
里面设计到一些对话推进剧情的地方,我首先想到的也是AVG的方式,下面是对话框,再加个人物特写。不过我这个没你复杂,纯显示文字推进剧情,没有选项。
我接触C2时间也不长,现在跟着贴吧各位边学边做,有问题就问,碰见别人提问自己正好会的就帮着答一下。
你这个工程文件我也打开看了,第一感觉肯定就是重复部分比较多。像游戏逻辑什么的我自己也不擅长,就不提意见了。我就针对重复代码这一点说吧,C2 里也可以引用 function 来解决重复代码。(下面我会说的比较啰嗦 =。= 主要考虑借着你这个例子,顺便也给完全没有编程基础,对function没什么概念的新人看一下。)
function 好处:1.减少代码,2.条理清晰不易出错,3.方便修改(想进行调整的时候,改一下function就行了,各处引用该function的地方就都跟着自动改了,不会遗漏)
用法挺简单的,先在图形界面双击空白加入 function 物件。然后在事件页 function,on function ,再给起个名,就创建好了。然后你可以给function加一些被调用时要执行的动作。你这个例子里就是 “设定文字内容、实现渐变、显示正确的元首动画” 等动作。
调用的时候直接在条件后(比如 scence = 4001),Add action,function,call function。填入function 名字。
可能有的基友要说 =。= 我每段话说的内容都不一样啊。。。怎么可能用一段代码统一。。。这就涉及到parameter (参数)了。function 之所以可重复使用性这么强,就是因为可以自定义一些param。这个AVG里 “设定文字内容、实现渐变、显示正确的元首动画” 这一串动作是相同的,但 ”要显示的什么文字“ 和 ”要显示哪张元首动画“ 是不同的。所以我们设置两个 param 并在 function 中的相应位置调用。
下图中我把那一大段动作先挪到 function里,然后把 set animation to ”HeadDown“ 的部分换成了 set animation to Function.Param(1) ,调用传入的 param 。
这样,我引用 talk() 时传入"HeadDown",就执行一大串动作并在其中显示 元首 HeadDown的动画,我传入”zaza“,就同样执行那一大串动作,但会显示元首 zaza 的动画。
文字部分也一样操作,先在 function 里设定好 Set text to funciton.param(0) 。当我们想显示对话的时候,调用刚才自定义好的 talk() ,然后点 Add parameter 添加 parame ,分别填入要显示的文字和动画。这样右边原本一大段代码,就可以替换换成一行 function 了,功能还是一样的。
===============
其他,有些代码看着和定义好的 function 格式不太统一,这时候可以再看看。有时通过调整可以统一起来,打到使用 function 的目的。比如 4001(右)部分的代码和function(左) 对比,绿色部分一样,蓝色部分的前两条位置相反,还多了一条红色的。
其实细看一下4001,适当的调整动作顺序并不会影响显示,我一开始就 Set opacity to 100,也完全可以。先 fade 还是先 set animation 也无所谓。于是把顺序大概换一下,就变成了这样:
再后面就把绿色部分换成一行 function 就行了。
是不是感觉有点熟悉?好像解方程一样?一开始乱七八糟用不到公式啊!后来加个数,减个数,换换顺序,来俩括号,诶?和公式一样了!可以用了!
反正function的用法也挺灵活的,当你做游戏过程中发现大段大段重复代码的时候,可以试试用 function 来简化。不同的部分,通过引入不同的 param 来解决。
最后是官方结束语:希望大家在 C2 吧一起学习,共同进步~
以上 =___=