02 Scene

本文介绍了Unity中场景数据的组织方式及其存储结构。通过使用JSON格式的.scene文件,详细解释了如何保存GameObject及其组件的数据,并提供了具体的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景

概述

在这里插入图片描述

在Unity中,一个场景包含了一个Scene,许多的GameObject,GameObject中又包含了Transfrom、Render、Material、MonoBehavior等组件。因此我将用类Scene、GameObject、和Component来模拟Unity中的模式来存储游戏中所有的数据。

实现

场景文件

场景数据将会使用JSON格式保存在.scene文件中.一个场景将会包含场景的通用数据(暂时有天空盒),子节点.子节点数据.有name, Components,Children等,其中Component中会保存type和其他Component特有的数据,这些数据将会用SerializableHelper解析.

{
	"Gameobjects": [ //
        	"name": "UI11",
			"Children": [],
			"Components": [
				{
                    "type": 5,
					"position": [0,0,1],
				}
			]
	],
	"Cube": {
	}
}

工程地址

CppGame

error: field name not in record or union initializer 130 | .len = 6 // "Scene1"鐨勯暱搴︼紙鍖呭惈缁撳熬绌哄瓧绗︼級 | ^ E:/Desktop/esp-idf-release-v5.5/examples/bluetooth/esp_ble_mesh/onoff_models/onoff_server/main/main.c:130:13: note: (near initialization for 'stored_scenes[0].scene_value') E:/Desktop/esp-idf-release-v5.5/examples/bluetooth/esp_ble_mesh/onoff_models/onoff_server/main/main.c:130:20: warning: excess elements in scalar initializer 130 | .len = 6 // "Scene1"鐨勯暱搴︼紙鍖呭惈缁撳熬绌哄瓧绗︼級 | ^ E:/Desktop/esp-idf-release-v5.5/examples/bluetooth/esp_ble_mesh/onoff_models/onoff_server/main/main.c:130:20: note: (near initialization for 'stored_scenes[0].scene_value') E:/Desktop/esp-idf-release-v5.5/examples/bluetooth/esp_ble_mesh/onoff_models/onoff_server/main/main.c: In function 'example_ble_mesh_time_scene_server_cb': E:/Desktop/esp-idf-release-v5.5/examples/bluetooth/esp_ble_mesh/onoff_models/onoff_server/main/main.c:799:49: error: 'esp_ble_mesh_time_scene_server_cb_value_t' has no member named 'scene_store' 799 | uint16_t scene_number = param->value.scene_store.scene_number; | ^ E:/Desktop/esp-idf-release-v5.5/examples/bluetooth/esp_ble_mesh/onoff_models/onoff_server/main/main.c:823:35: error: 'scene->scene_value' is a pointer; did you mean to use '->'? 823 | scene->scene_value.value = malloc(sizeof(scene_data_t)); | ^ | -> E:/Desktop/esp-idf-release-v5.5/examples/bluetooth/esp_ble_mesh/onoff_models/onoff_server/main/main.c:824:39: error: 'scene->scene_value' is a pointer; did you mean to use '->'? 824 | if (scene->scene_value.value) | ^ | -> E:/Desktop/esp-idf-release-v5.5/examples/bluetooth/esp_ble_mesh/onoff_models/onoff_server/main/main.c:826:46: error: 'scene->scene_value' is a pointer; did you mean to use '->'? 826 | memcpy(scene->scene_value.value, &data, sizeof(scene_data_t)); | ^ | -> E:/Desktop/esp-idf-release-v5.5/examples/bluetooth/esp_ble_mesh/onoff_models/onoff_server/main/main.c:827:39: error: 'scene->scene_value' is a pointer; did you mean to use '->'? 827 | scene->scene_value.len = sizeof(scene_data_t); | ^ | -> E:/Desktop/esp-idf-release-v5.5/examples/bluetooth/esp_ble_mesh/onoff_models/onoff_server/main/main.c:830:44: error: increment of read-only member 'scene_count' 830 | scene_state.scene_count++; | ^~ E:/Desktop/esp-idf-release-v5.5/examples/bluetooth/esp_ble_mesh/onoff_models/onoff_server/main/main.c:848:49: error: 'esp_ble_mesh_time_scene_server_cb_value_t' has no member named 'scene_recall' 848 | uint16_t scene_number = param->value.scene_recall.scene_number; | ^ E:/Desktop/esp-idf-release-v5.5/examples/bluetooth/esp_ble_mesh/onoff_models/onoff_server/main/main.c:863:53: error: 'stored_scenes[i].scene_value' is a pointer; did you mean to use '->'? 863 | if (stored_scenes[i].scene_value.len == sizeof(scene_data_t)) | ^ | -> E:/Desktop/esp-idf-release-v5.5/examples/bluetooth/esp_ble_mesh/onoff_models/onoff_server/main/main.c:865:90: error: 'stored_scenes[i].scene_value' is a pointer; did you mean to use '->'? 865 | scene_data_t *data = (scene_data_t *)stored_scenes[i].scene_value.value; | ^ | -> E:/Desktop/esp-idf-release-v5.5/examples/bluetooth/esp_ble_mesh/onoff_models/onoff_server/main/main.c:902:49: error: 'esp_ble_mesh_time_scene_server_cb_value_t' has no member named 'scene_del' 902 | uint16_t scene_number = param->value.scene_del.scene_number; | ^ E:/Desktop/esp-idf-release-v5.5/examples/bluetooth/esp_ble_mesh/onoff_models/onoff_server/main/main.c:910:54: error: 'stored_scenes[i].scene_value' is a pointer; did you mean to use '->'? 910 | free(stored_scenes[i].scene_value.value); | ^ | -> E:/Desktop/esp-idf-release-v5.5/examples/bluetooth/esp_ble_mesh/onoff_models/onoff_server/main/main.c:911:49: error: 'stored_scenes[i].scene_value' is a pointer; did you mean to use '->'? 911 | stored_scenes[i].scene_value.value = NULL; | ^ | -> E:/Desktop/esp-idf-release-v5.5/examples/bluetooth/esp_ble_mesh/onoff_models/onoff_server/main/main.c:912:49: error: 'stored_scenes[i].scene_value' is a pointer; did you mean to use '->'? 912 | stored_scenes[i].scene_value.len = 0; | ^ | -> E:/Desktop/esp-idf-release-v5.5/examples/bluetooth/esp_ble_mesh/onoff_models/onoff_server/main/main.c:922:75: error: 'stored_scenes[(int)scene_state.scene_count - 1].scene_value' is a pointer; did you mean to use '->'? 922 | stored_scenes[scene_state.scene_count - 1].scene_value.value = NULL; | ^ | -> E:/Desktop/esp-idf-release-v5.5/examples/bluetooth/esp_ble_mesh/onoff_models/onoff_server/main/main.c:923:75: error: 'stored_scenes[(int)scene_state.scene_count - 1].scene_value' is a pointer; did you mean to use '->'? 923 | stored_scenes[scene_state.scene_count - 1].scene_value.len = 0; | ^ | -> E:/Desktop/esp-idf-release-v5.5/examples/bluetooth/esp_ble_mesh/onoff_models/onoff_server/main/main.c:926:44: error: decrement of read-only member 'scene_count' 926 | scene_state.scene_count--;
08-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值