ConsoleComponent
用于监听控制台输入,和创建ReplComponent
组件
- 在该组件的
Start
事件中,开启一个监听玩家输入的循环
//等待用户输入任务,阻塞循环
string line = await Task.Factory.StartNew(() =>
{
Console.Write($"{this.Mode}> ");
//返回用户输入
return Console.In.ReadLine();
}, this.CancellationTokenSource.Token);
-
在接收到用户输入后,校验输入的字符串
-
如果等于“reload“
重新加载热更的程序集
-
如果等于"repl"
添加
ReplComponent
组件,并切换到命令模式,在命令模式中收到的字符串将直接转发给ReplComponent
执行
-
ReplComponent
该组件用于编译命令代码,运行到程序中
-
在该组件的Awake事件中,创建了
ScriptOptions
对象,并指定执行程序集为组件当前所在的程序集 -
接收到
ConsoleComponent
传入的命令后进行分析-
如果是"exit"
退出命令模式,并卸载自身组件
-
如果是"reset"
清空前面指令编译的结果(将
ScriptState
对象设为空) -
其他指令
调用
CSharpScript.RunAsync
编译并执行传入的C#指定,并将结果保存到ScriptState
对象中
-