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

3.8分支版本的建议 #52

Open
blackier opened this issue Nov 28, 2021 · 4 comments
Open

3.8分支版本的建议 #52

blackier opened this issue Nov 28, 2021 · 4 comments
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@blackier
Copy link

1、

3.8版本我个人用的是v3.8.75的spine,分支编译出来后的godot添加模型完成没响应,最后看报错,在官方的代码里找到了原因,一共有两处:
SkeletonJson.cpp132

	skeleton = Json::getItem(root, "skeleton");
	if (skeleton) {
		skeletonData->_hash = Json::getString(skeleton, "hash", 0);
		skeletonData->_version = Json::getString(skeleton, "spine", 0);
		// if ("3.8.75" == skeletonData->_version) {
                //     delete skeletonData;
                //     setError(root, "Unsupported skeleton data, please export with a newer version of Spine.", "");
                //     return NULL;
                // }
		skeletonData->_x = Json::getFloat(skeleton, "x", 0);
		skeletonData->_y = Json::getFloat(skeleton, "y", 0);
		skeletonData->_width = Json::getFloat(skeleton, "width", 0);
		skeletonData->_height = Json::getFloat(skeleton, "height", 0);
		skeletonData->_fps = Json::getFloat(skeleton, "fps", 30);
		skeletonData->_audioPath = Json::getString(skeleton, "audio", 0);
		skeletonData->_imagesPath = Json::getString(skeleton, "images", 0);
	}

SkeletonBinary.cpp129

	char *skeletonData_version = readString(input);
	skeletonData->_version.own(skeletonData_version);
        // if ("3.8.75" == skeletonData->_version) {
        //     delete input;
        //     delete skeletonData;
        //     setError("Unsupported skeleton data, please export with a newer version of Spine.", "");
        //     return NULL;
        // }

	skeletonData->_x = readFloat(input);
	skeletonData->_y = readFloat(input);
	skeletonData->_width = readFloat(input);
	skeletonData->_height = readFloat(input);

如果你用的也是3.8.75导出的模型,那么你编译时就需要把上面对版本的判断去掉,否者模型是不能加载的。奇怪的是官方就只针对3.8.75,强制更新也该是小于某个版本才对,原因估计就是我为什么能在用3.8.75吧。我对比了官方加了这个限制的前和后的提交对比,数据解析这块看起来是没太大改动,所以去掉也应该没事吧,我也说不准,我去掉后重新编译是可以正常加载模型了。

2、

两处代码修改参考:

// SpineAtlasResource.cpp -> load_from_atlas_file
···
    CharString atlas_data_utf8 = atlas_data.utf8();
    atlas = new spine::Atlas(atlas_data_utf8, atlas_data_utf8.length(), source_path.get_base_dir().utf8(), new RaiixSpineTextureLoader(&tex_list, &ntex_list, normal_texture_prefix));
···

值得注意转换过后sizelength是不同的。

#ifndef SPINE_RUNTIME_REGISTER_TYPES_H
#define SPINE_RUNTIME_REGISTER_TYPES_H

void register_spine_runtime_types();
void unregister_spine_runtime_types();

#endif // SPINE_RUNTIME_REGISTER_TYPES_H

这个说实在的,在看到没加时我是有点吃惊的,但看到其他文件都加了,我觉得应该是遗漏了,哈哈。

3、

最后最后,关键的一点,我希望能用godot官方的代码格式化配置,格式化源文件,godot项目根目录下就有.clang-format文件,如果本地仓库就在godot的仓库下,那么直接用clang-format格式化就会按配置里的来,如果不在godot的仓库,那么拷贝出来一份放到自己仓库里来就行了。需要注意的是,godot官方用的是v13的clang了,如果格式化时配置参数不支持,那么你就需要更新你的clang版本才行,我用vscode做格式化时就遇到了这个问题,c++扩展自带的版本太低了,然后安装v13版本clang自定义配置clang-format的路径才正确格式化。这个其实挺必要的。

这两天忙活基本都在忙活这个,挺有意思也挺花精力的,佩服作者能写这个项目出来,这个需要都熟悉godot和spine才行,还会c++,英语还好,那些官方文档我看的头疼。godot我也是这两个月才接触的,业余才有时间学下,现在都没入门,想加下群的,但估计和群主游戏爱好不同吧,申请了就没反映了,随缘了。pr是真的不想提了,只能在这写这几点建议,也是想让自己这两天不要白忙活,算是做点小小贡献了。

格式化那点真的希望能采纳下!

@rayxuln
Copy link
Owner

rayxuln commented Nov 28, 2021

十分感谢你的建议

@rayxuln
Copy link
Owner

rayxuln commented Nov 28, 2021

q群只要是填写了游戏的就能进了的,我估计是管理员开小差了。
稍等我把管理员踢了泄愤

@rayxuln rayxuln added enhancement New feature or request help wanted Extra attention is needed labels Nov 28, 2021
@pytomtoto
Copy link

链接:https://pan.baidu.com/s/1uqymaUvAlO91Ubm3QI-vUg
提取码:godo

@q8135434
Copy link

q8135434 commented Feb 1, 2024

链接:https://pan.baidu.com/s/1uqymaUvAlO91Ubm3QI-vUg
提取码:godo

大佬,我不会c++,但是我看到有个spine的平替龙骨软件,它有个插件c++的支持godot4以上,大佬能否去看看把它编译过来

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

4 participants