Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

增加定义全局静态变量、获取运行时属性 #510

Merged
merged 15 commits into from
Jul 8, 2024

Conversation

xiaoxustudio
Copy link
Contributor

image
config.txt中定义的变量都会被解析,包括原本的Game_nameGame_key等变量,使用$+变量名称即可获取到变量,此变量不可修改,但可使用setVar进行获取后修改setVar的值。

例如$Game_name获取游戏名称
image
image

也可以自己自定义属性(重复定义的只会保留最后一次定义的值
image
image
image

另外的还可获取运行时的Stage对象、GUI对象、UserData对象里面的属性,都是在使用$+对象属性路径即可

例如bgm里面的volume属性,则是$bgm.volume即可获取
这种获取对象的形式需要使用setVar来存储获取,我们也推荐使用这种来存储获取,因为变量过长会导致可读性变差
image
image

部分属性可在WebGal编辑器的底部DEBUGGER面板State可查看

@xiaoxustudio
Copy link
Contributor Author

但当$+变量名称的变量名称被setVar定义,则获取的是setVar定义的变量的值,config.txt中的变量则不会获取

@MakinoharaShoko
Copy link
Member

部分用户也有需求,允许在脚本中修改标题背景图片或背景音乐等。这在许多游戏中也有应用,用于在打通某条线后将标题换成对应的人物和主题歌等。目前,正在考虑将 config.txt 中的内容全部在第一次加载时写入长效变量,这样用户就可以修改。

另外,直接给变量名加 $ 的方案看上去像是一种临时解决方案。因为实际上 $Game_name 这样的引用看上去像是用 $ 来引用一个 config 里面的值,但是实际上内部实现是,一个以 $ 开头的变量,不是很符合直觉。

我的建议是:

1、任何 config 里面的键都作为保留键,存到长效变量中去,允许用户修改以实现在脚本中改变游戏的某些配置项。

2、$ 只用于引用游戏状态中的值,并且只能用 {$varname} 的方式引用,然后统一在处理 {} 语法的时候处理。

@xiaoxustudio
Copy link
Contributor Author

部分用户也有需求,允许在脚本中修改标题背景图片或背景音乐等。这在许多游戏中也有应用,用于在打通某条线后将标题换成对应的人物和主题歌等。目前,正在考虑将 config.txt 中的内容全部在第一次加载时写入长效变量,这样用户就可以修改。

另外,直接给变量名加 $ 的方案看上去像是一种临时解决方案。因为实际上 $Game_name 这样的引用看上去像是用 $ 来引用一个 config 里面的值,但是实际上内部实现是,一个以 $ 开头的变量,不是很符合直觉。

我的建议是:

1、任何 config 里面的键都作为保留键,存到长效变量中去,允许用户修改以实现在脚本中改变游戏的某些配置项。

2、$ 只用于引用游戏状态中的值,并且只能用 {$varname} 的方式引用,然后统一在处理 {} 语法的时候处理。

第一点建议我认同,只是第二点建议,为什么只能在{}中引用,不可以用setVar来转存,我们不确定用户是否要使用这些变量来进行二次计算,应该不只是可以在{}中引用,我们应该还需要在setVar里面也可以使用

@MakinoharaShoko
Copy link
Member

部分用户也有需求,允许在脚本中修改标题背景图片或背景音乐等。这在许多游戏中也有应用,用于在打通某条线后将标题换成对应的人物和主题歌等。目前,正在考虑将 config.txt 中的内容全部在第一次加载时写入长效变量,这样用户就可以修改。
另外,直接给变量名加 $ 的方案看上去像是一种临时解决方案。因为实际上 $Game_name 这样的引用看上去像是用 $ 来引用一个 config 里面的值,但是实际上内部实现是,一个以 $ 开头的变量,不是很符合直觉。
我的建议是:
1、任何 config 里面的键都作为保留键,存到长效变量中去,允许用户修改以实现在脚本中改变游戏的某些配置项。
2、$ 只用于引用游戏状态中的值,并且只能用 {$varname} 的方式引用,然后统一在处理 {} 语法的时候处理。

第一点建议我认同,只是第二点建议,为什么只能在{}中引用,不可以用setVar来转存,我们不确定用户是否要使用这些变量来进行二次计算,应该不只是可以在{}中引用,我们应该还需要在setVar里面也可以使用

我想,在 setVar 里面用 {$xxx} 的方式,应该也是可以引用的,因为在脚本被送入 setVar 之前就已经被 {} 语法替换了值。只不过直接在变量里面用 $xxx 可能不生效。如果你想要添加在 setVar 中直接使用 $xxx 的方式,需要额外写一些代码,当然这样也可以,也可以添加这样的支持。

@xiaoxustudio
Copy link
Contributor Author

config配置会被保存到长效变量中
image

使用setVar可修改config信息
并支持以下的写法
image
屏幕录制 2024-07-07 180038

PS:使用这两项都可恢复config为默认配置,但需要刷新
image

@MakinoharaShoko
Copy link
Member

其实可以不用新建 configData 这个字段,把 config 里面的那些键当成是普通的长效变量就行了。后面会在长效变量的章节单独说明,某些特殊名称的长效变量的用途。
这样做可以让整个逻辑更加简化,避免因为增加复杂度引发的考虑不周。

@MakinoharaShoko MakinoharaShoko merged commit 34f1487 into OpenWebGAL:dev Jul 8, 2024
1 check passed
MakinoharaShoko added a commit to ClodLingxi/WebGAL that referenced this pull request Dec 20, 2024
增加定义全局静态变量、获取运行时属性
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants