起步
在该文你将会知道:
- 什么是cyf
- cyf需要的工具
- 通过官方实例制作第一场战斗
小引入
在座的应该都是UT粉吧,想必都很想创建自己的Undertale同人游戏
当然有2个办法,使用GMS或CYF。我个人推荐CYF因为它可能入门简单
不说了,先关门放CYF
什么是CYF
CYF(Create Your Frisk)是基于Unity引擎制作,通过Lua编程语言实现Undertale同人战斗的引擎
通过CYF,你可以实现Undertale战斗中几乎所有功能。基于扩展性高的Lua语言,你可以制作出富有挑战性、攻击丰富的同人战斗战斗
使用CYF需要的工具
CYF本体(此处仅提供windows端):Github 蓝奏云(版本v0.6.5)。若是更新又不想下载慢的,可以使用油猴脚本+Github高速下载脚本,具体方法请自行查阅
文本编辑器,可以编辑Lua代码就没问题,强烈建议Sublime Text3,VSCode,支持lua语法高亮及提示,Lua的idle也没问题~~(只是看着不舒服)
小提示如果你使用的是VSCode,初次安装完之后节目显示的是英文,你可以按下
Ctrl+Shift+X
或者 左边侧栏的“扩展”,在搜索框搜索Chinese,在下方找到语言包扩展,安装完重启即可
CYF文件结构
解压完之后,我们会发现以下东西:
Create Your Frisk
├── Create Your Frisk x.x.x_Data
├── Default
├── Documentation CYF x.x.x # --官方文档
├── Mods # --Mods文件夹,加mod都在这
├── Mono
├── Create Your Frisk x.x.x.exe # --可执行程序,各平台的可执行程序会有所不同
├── UnityCrashHandler64.exe
├── UnityPlayer.dll
└── WinPixEventRuntime.dll
开始你的第一个战斗
官方给出,学习CYF最好的方法就是复制Encounter Skeleton战斗,解析里面的内容
那我们复制下来,重命名为my fight
之后试玩一下,之后我们解析文件夹内部
├──Audio # >>你战斗的音乐
├──Sprite # >>战斗用的图片
├──Lua # >>你战斗的脚本(重要)
│ ├──Encounters # >>遭遇脚本
│ ├──Monsters # >>怪物脚本
│ └──Waves # >>战斗脚本
因为CYF需要使用Lua编程,所以我们今天就解决Lua的基本语法
先打开 Monsters
文件夹,发现里面有一个 poseur.lua
文件
我们打开ta并看到这一行:
commands = {"Act 1", "Act 2", "Act 3"}
它设置行动里面的内容,改动一下可以看到:
commands={"Talk","Act2","Act3"}
再看到这段代码:
function HandleCustomCommand(command)
if command == "ACT 1" then
currentdialogue = {"Selected\nAct 1."}
elseif command == "ACT 2" then
currentdialogue = {"Selected\nAct 2."}
elseif command == "ACT 3" then
currentdialogue = {"Selected\nAct 3."}
end
BattleDialog({"You selected " .. command .. "."})
end
很抱歉这么快就让你看到怎么难的代码。因为我这个是无编程基础也可以观看的,所以我只讲内容
function是定义一个函数(功能),这里定义了HandleCustomCommand(command)
函数。
这是CYF的特殊函数,也就是说,执行ACT时会发生的事
if
是条件判断,用人话大概就是:
if command == "ACT 1" then --如果command是“ACT1” 那么
currentdialogue = {"Selected\nAct 1."}
elseif command == "ACT 2" then --又如果command是"ACT2" 那么
currentdialogue = {"Selected\nAct 2."}
elseif command == "ACT 3" then
currentdialogue = {"Selected\nAct 3."}
end
elseif
是又如果的意思
中间的 command ==“ACT1”
就是要判断的条件。==是等于的意思
同时还有<
、>
、<=
、>=
等判断语句
好,我们再改改
function HandleCustomCommand(command)
if command == "TALK" then
currentdialogue = {"Don't Talk!"}
elseif command == "ACT 2" then
currentdialogue = {"Selected\nAct 2."}
elseif command == "ACT 3" then
currentdialogue = {"Selected\nAct 3."}
end
BattleDialog({"You selected " .. command .. "."})
end
这里 if command == "TALK" then
的TALK一定要大写
完成! (emmm,话说,文字改版好像有点内啥)