个性化阅读
专注于IT技术分析

故事书-故事对象(JSON)

我们正在创建不太混乱的LonnyLips脚本。然后, 首先, 创建一个StoryBook节点, 然后将每个故事作为StoryBook的单独子节点, 并使每个故事使用相同的脚本, 我们希望新脚本为每个故事保存数据。

然后我们创建一个节点。单击加号(+)添加节点。

故事书-故事对象(JSON)

在这里, 我们可以在下面看到该节点已创建。

故事书-故事对象(JSON)

节点的属性。

故事书-故事对象(JSON)

然后将”节点”名称重命名为StoryBook。

故事书-故事对象(JSON)

之后, 创建一个名为story0的节点, 该节点是StoryBook的子级。然后创建其名为Story0的子节点。

故事书-故事对象(JSON)

右键单击节点Story0, 然后单击附加的脚本以打开文本。

故事书-故事对象(JSON)

然后从路径中删除0后创建它。

故事书-故事对象(JSON)

这是脚本选项卡。

故事书-故事对象(JSON)

编码:

故事书-故事对象(JSON)

再创建一个名为story1的节点, 它是story0的副本。

要制作任何节点的重复节点, 请右键单击该节点, 然后转到重复或表达控制权以进行其下一个系列。或者, 我们可以单击关键字ctrl + D, 这是重复项的快捷方式。

故事书-故事对象(JSON)

Story0中的代码:

extends Node
var prompts=["a happy name", "a noun", "adverb", "adjective"]
var story = "It takes many %s deeds to build a %s reputation, and %s bad one to %s it."

复制节点1之后, 然后在代码中添加导出功能, 如下所示。

故事书-故事对象(JSON)

在代码中添加导出函数后, 这将在属性中发生:

故事书-故事对象(JSON)

我们也可以在检查器属性中添加一个故事。然后从如下所示的检查器属性中相应地更改其故事。

故事书-故事对象(JSON)
故事书-故事对象(JSON)

我们还可以添加数组和数组类型, 如下所示:

故事书-故事对象(JSON)

但是现在, 我们不这样做:

如果要在脚本中添加一个数组, 我们将进行编码, 然后它将自动显示在我们的属性中。

故事书-故事对象(JSON)

在这里, 我们使用键入的G.DScript。

我们可以看到同时按下ctrl的任何关键字的描述和特定关键字。

故事书-故事对象(JSON)

代码如下:

故事书-故事对象(JSON)

或者我们可以用字符串代替”。”

故事书-故事对象(JSON)

然后, 我们将访问lonnylips.gd并将所有故事注释到脚本中, 如下所示。

故事书-故事对象(JSON)

lonnylips.gd的示例:

extends Control
var player_words=[]
#var template = [
#{
#	"prompts":["a name", "a noun", "adverb", "adjective"], #   "story" : "It takes many %s deeds to build a %s reputation, and %s bad one to %s it."
  #  }, #{
	#	"story":"There once was %s called %s who searched far and wide for the mythical %s noun of %s.", #	"prompts": ["a noun", "a name", "an adjective", "another name"], #}, #{
	#	"story":"Once upon a time a %s ate a %s felt very %s. It was a %s day for all good %s.", #	"prompts": ["a name", "a thing", "a feeling", "another feeling", "some things"], #}, #{
	#	"story":"There once was %s called %s that lived as %s as a %s." , #	"prompts": ["a thing", "a name", "a descrition", "a thing"], #}, #{
	#	"story":"There once was %s called %s who searched far and wide for the mythical %s noun of %s.", #	"prompts": ["a noun", "a name", "an adjective", "another name"], #}, #{
	#	"story":"a Poem.\n\n1 I was a %s as can be, \n then we could call me %s, \n and i would talk to %s ", #	"prompts": ["a noun (a thing)", "an adjective(a description word)", "a person's name"], #}, #{
	#	"story":"Dear %s, I hope this letter finds we well. I have spent the past three weeks in %s researching the %s of donkies for my new book. I miss you hesitantly, and whenever i see a %s I think of u. ", #	"prompts": ["a person's name", "the name of a place", "the plural of a noun", "another name"] 
	#}, #{
	#	"story":"Once upon a time, a %s hero called %s was sent to %s, tio defeat a %s %s. He did so, return to defeat %s", #	"prompts": ["an adjective", "a person's name", "a place", "an adjective", "a noun", "another place"], #}, #{
	#	"story":"The ultimate pizza recipe. \n\n Moix one packet of %s with three spoonfuls of flour. Knead it as it %s then put the %s and %s on it, after that open the oven and %s it.", #	"prompts": ["a noun", "an adjective", "another noun", "yet another noun", "adjective"] 
	#}
	#]
var current_story

onready var PlayerText= $VBoxContainer/HBoxContainer/PlayerText
onready var DisplayText= $VBoxContainer/DisplayText

func _ready():
	randomize()
#	current_story=template[randi()% template.size()]
	set_current_story()
	DisplayText.text="Welcome all of u in the world of game and have a wondeful time!"
	check_player_words_length()
	PlayerText.grab_focus()
func set_current_story():
	randomize()
	var stories = $StoryBook.get_child_count() # is used for how many children u have as here are 4 chilren 0, 1, 2, 3.
	var selected_story=randi()%stories
	current_story.prompts= $StoryBook.get_child(selected_story).prompts
	current_story.story= $StoryBook.get_child(selected_story).story
#	current_story=template[randi()% template.size()]

func _on_PlayerText_text_entered(new_text):
	add_to_player_words()

func _on_TextureButton_pressed():
	if is_story_done():
		get_tree().reload_current_scene()
	else:
		add_to_player_words() 

func add_to_player_words():
	player_words.append(PlayerText.text)
	DisplayText.text=""
	PlayerText.clear()
	check_player_words_length()

func is_story_done():
	return player_words.size() == current_story.prompts.size()

func check_player_words_length():
	if is_story_done():
		end_game()
	else:
		prompt_player()

func tell_story():
	DisplayText.text= current_story.story % player_words

func prompt_player():
	DisplayText.text += "May I have" +current_story.prompts[player_words.size()]+"please?"

func end_game():
	PlayerText.queue_free()
	$VBoxContainer/HBoxContainer/Label.text="Again!"
	tell_story()

之后, 我们将故事复制到story0(故事1)的属性中。

故事0

故事书-故事对象(JSON)

故事1

故事书-故事对象(JSON)

我们可以添加更多类似以上的故事。

在这里, 我们还要创建两个以上Story2, story3之类的故事, 并在其中编写说明。

故事书-故事对象(JSON)

在这里, 创建了四个故事。在这里也填写故事并排列。

更新代码以检查员形式编写故事时:

extends Control
var player_words=[]
var current_story
onready var PlayerText= $VBoxContainer/HBoxContainer/PlayerText
onready var DisplayText= $VBoxContainer/DisplayText
func _ready():
	randomize()
	set_current_story()
	DisplayText.text="Welcome all of u in the world of game and have a wondeful time!"
	check_player_words_length()
	PlayerText.grab_focus()

func set_current_story():
	randomize()
	var stories = $StoryBook.get_child_count() # is used for how many children u have as here are 4 chilren 0, 1, 2, 3.
	var selected_story=randi()%stories
	current_story.prompts= $StoryBook.get_child(selected_story).prompts
	current_story.story= $StoryBook.get_child(selected_story).story

func _on_PlayerText_text_entered(new_text):
	add_to_player_words()

func _on_TextureButton_pressed():
	if is_story_done():
		get_tree().reload_current_scene()
	else:
		add_to_player_words() 

func add_to_player_words():
	player_words.append(PlayerText.text)
	DisplayText.text=""
	PlayerText.clear()
	check_player_words_length()

func is_story_done():
	return player_words.size() == current_story.prompts.size()

func check_player_words_length():
	if is_story_done():
		end_game()
	else:
		prompt_player()

func tell_story():
	DisplayText.text= current_story.story % player_words

func prompt_player():
	DisplayText.text += "May I have" +current_story.prompts[player_words.size()]+"please?"

func end_game():
	PlayerText.queue_free()
	$VBoxContainer/HBoxContainer/Label.text="Again!"
	tell_story()

输出如下:

故事书-故事对象(JSON)
故事书-故事对象(JSON)
故事书-故事对象(JSON)
故事书-故事对象(JSON)
故事书-故事对象(JSON)

在下一个教程中, 我们将通过JSON了解StoryBook。


赞(0)
未经允许不得转载:srcmini » 故事书-故事对象(JSON)

评论 抢沙发

评论前必须登录!