自制脚本语言(第一弹)

news/2024/5/18 13:08:16 标签: unity, 开发语言, 游戏程序, 游戏, 游戏开发

千里之行始于足下,哪一个成熟的男孩纸不想拥有一个属于自己的游戏引擎呢?


为什么要造轮子(因为特别酷):

目前,使用图形界面编写剧本,需要使用者双手在鼠标和键盘两者之中来回切换,限制了剧本编写者的创作潜力。因此我们需要一个简洁的纯文本输入方式,以提升写作的效率。然而,目前大多数常用的脚本语言过于复杂,对非专业人员并不友好。更重要的是,由于这些语言主要是由国外人发明,他们并非考虑到非英文母语使用者的习惯,比如对英文关键词的不熟悉,以及存在对半角全角敏感的问题。许多非专业程序编写者经常会将“"和((混用。因此,需要发明一种针对中文游戏剧本解析的脚本语言,以此提升游戏剧本编写的效率。

灵感来源于知乎用户林登·胜的回答提到的内容,感觉采用缩进作为代码块特别优雅。显而易见的解决了代码分块问题,而且不会引入额外的关键词或者采用难懂的大括号方式。此外,自从Python开始流行以后,很多学校也为非计算机专业的学生开设Python的相关课程,缩进风格更容易让人接受。在此基础上,我希望参数之间采用空格分割,这样会更加优雅。同时,以行为单位,一行只干最简单的事情,这样会使得整个代码清晰易读。

以下是我希望的代码样式:

注释 这算一种注释
# 这种也可以作为注释

# 函数参数不需要括号
无参数的函数:
函数: 参数
函数: 参数1 参数2 参数3
# 此外还可以这样写
角色名: 可以直接写角色说了什么
# 所有的角色名会作为函数直接注入环境变量中。
# 如果该名字不是变量,那么字符串可以省略引号。
# 如果出现需要引号,或者操作符的情况,需要用\来转义。
# 这可能是写作中最不舒服的一种情况,我在思考应该如何回避。
角色名: \“冒号需要出现在对话框中\:引号需要出现在对话中\”

# 变量的定义
变量1 = 1 	# 整数类型
变量2 = 2.5 	# 浮点类型
变量3 = 5 / 2 # 除法结果为浮点类型
变量4 = 5 // 2 # 整除为整数类型
# 此外还支持幂函数(**)、求余(%)、取内容(.)和下标运算(【】)
# 变量类型有整数、浮点、布尔、字符串和函数

# 剧本最重要的就是流程控制
# 条件分支采用缩进作为代码分块
# 其中TAB现对于8个空格,2个全角空格
如果 表达式
	# 这里是表达式为真的情况
否则如果 表达式2
	# 这里是表达式1为假且2为真的情况
否则
	# 这里是都不是的情况
	
# 选项也是剧本里面最常见的流程控制
# 选项相对于条件分支来说,更加特殊
# 表达式接收的是一个字符串,字符串会显示在屏幕上,作为提问
# 选项是一个个字符串,玩家选择对应选项进入对应分支
选择 字符串
选项 选项A
	输出: 玩家选项A选项
选项 选项B
	输出: 玩家选项B选项

# 此外还有重要的就是场景跳转了
# 这个其实做成简单的函数就可以了
跳转场景: 场景名称

http://www.niftyadmin.cn/n/5183978.html

相关文章

一文读懂GPTs的构建与玩法(GPTs保姆级教程)

Rocky Ding 公众号:WeThinkIn 写在前面 【WeThinkIn出品】栏目专注于分享Rocky的最新思考与经验总结,包含但不限于技术领域。欢迎大家一起交流学习💪 大家好,我是Rocky。 本文将从“什么是GPTs”,“GPTs搭建流程”&am…

X86 bios 中断大全

1、显示服务(Video Service——INT 10H) 00H —设置显示器模式 0CH —写图形象素 01H —设置光标形状 0DH —读图形象素 02H —设置光标位置 0EH —在Teletype模式下显示字符 03H —读取光标信息 0FH —读取显示器模式 04H —读取光笔位置 10H —颜色 05H —设置…

Docker镜像管理:为什么Harbor是首选

关注【云原生百宝箱】公众号,获取更多云原生消息 “Harbor ”这个名字本身就与容器镜像有关。Harbor 是容器镜像装卸的场所。而且,“Harbor ”简单易读、易记,是项目推广的有力选择。 历史 Harbor 是 CNCF 毕业项目,它提供合规性…

大厂必备的6款React UI框架

优秀的ReactUI框架可以为您节省开发时间,提高开发效率,统一设计语言。你还在为你的项目寻找高质量的ReactUI框架吗?为了让您更容易找到易于使用的UI框架,分享6个优秀的ReactUI框架选项,并介绍了每个UI框架的不同功能和…

陪诊小程序|陪诊系统打开陪护行业新世界

随着社会老龄化加剧,以及人们对于医疗服务质量的要求提高,陪诊服务逐渐成为了医疗体系中不可或缺的一部分。而陪诊小程序作为陪诊服务的线上平台,更是受到了广泛的关注。下面小编就给大家讲解下陪诊小程序的功能并阐述其系统优势。 陪诊小程序…

《Hello Solidity!》之 随机数

随机数 本节我们讨论一个非常重要的元素 —— 随机数。 在虚拟世界的很多场景中都需要引入随机数,来让未来变得不可琢磨,激起我们探索的欲望。 想象你在玩游戏的时候,是不是每局都不尽相同呢? 那请问在Solidity里该如何生成随机…

UI自动化测试(弹出框,多窗口)

一、弹出框实战 1、在UI自动化测试中经常会遇到Alert弹出框的场景。Alert类是对话框的处理,主要是对alert警告框。confirm确认框,promp消息对话框。 text():获取alert的文本 dismiss ():点击取消 accept():接受 send-keys():输入 from selenium import …

【MATLAB源码-第77期】基于matlab的OCDM系统在AWGN信道下理论误码率和实际误码率对比仿真。

操作环境: MATLAB 2022a 1、算法描述 正交线性调频分频复用(OCDM,Orthogonal Chirp Division Multiplexing)是一种无线通信技术,它基于啁啾信号的原理。啁啾信号是一种频率随时间变化的信号,通常频率是线…