第十章 游戏剧情(Game Plot)
在大部分的RPG中,故事剧情是非常重要的。例如某些播放某些过场动画,人物台词等文字叙述的显示。这些可以推动整个游戏流程。
在Unity商店中,有一些剧情类的插件。我们编写的这个可以配合那些插件使用。
文章目录
六 命令执行器II (Command Executor II)
这一节,我们继续来编写一部分常用的命令执行器。
1 calc命令(calc Command)
我们需要解析的命令如下:
var a;
calc a += 10;
calc a = a + 10;
我们需要的参数为:
-
变量名:
a
,它必须定义过; -
类等号符号:它必须是
[=, +=, -=, *=, /=, &=, |=, ^=]
中的一个; -
类等号符号右值:
-
可以是一个单独变量或值;
-
可以是一个二元运算,二元运算符必须是
[+, -, *, /, &, |, ^]
中的一个。
-
这些等号符号和二元运算符号也是可以自定义的。
创建执行器类与参数类:
namespace DR.Book.SRPG_Dev.ScriptManagement
{
public class CalcExecutor : ScenarioContentExecutor<CalcExecutor.CalcArgs>
{
public struct CalcArgs
{
public string name;
public string equalOp;
public int value1;
public string binaryOp;
public int value2;
}
public override string code
{
get {
return "calc"; }
}
// TODO ParseArgs and Run
}
}
1.1 ParseArgs
在判断是否运算符号之前,我们可以知道:除了"="
外,其它的类等号去掉"="
后也是二元运算符,所以这一部分是重复的。
我们先来建立“判断符号是否合法”的帮助方法:
-
二元运算符号:
protected bool IsMatchBinaryOperator(string opStr, ref string binaryOp, out string error) { switch (opStr) { case "+": case "-": case "*": case "/": case "&": case "|": case "^": binaryOp = opStr; error = null; return true; default: error = GetMatchOperatorErrorString( opStr, "+", "-", "*", "/", "&", "|", "^"); return false; } }
-
类等号符号:
protected bool IsMatchEqualOperator(string opStr, ref string equalOp, out string error) { if (opStr == "=") { equalOp = opStr; } else { if (!IsMatchBinaryOperator(opStr.Substring(0, 1), ref equalOp, out error)) { error = GetMatchOperatorErrorString( opStr, "=", "+=", "-=", "*=", "/=", "&=", "|=", "^="); return false; } } error = null; return true; }
有了这些方法,我们来创建我们的ParseArgs
方法:
public override bool ParseArgs(IScenarioContent content, ref VarArgs args, out string error)
{
// TODO 转换参数
error = null;
return true;
}
我们已经做过好多次了,首先肯定是判断长度:
// calc var += 10;
// calc var = var + 10;
if (content.length != 4