Cocos Creator的C++和Lua支持:0.4版发布

主要是因为分辨率变化,可能导致两边被截了,显示不完全。

基于0.4版本 ,用 git 上example-case 在ccc1.8.2稳定版,导出到cocos2dx 3.16,直接就报错了:
E:\cocos\example-cases\packages\creator-luacpp-support\core\parser\Label.js:61 Uncaught can not find font file for uuid: b9c2f4b1-22a0-440a-9a97-9f801fe5b2a4
parse_properties @ E:\cocos\example-cases\packages\creator-luacpp-support\core\parser\Label.js:61
create_node @ E:\cocos\example-cases\packages\creator-luacpp-support\core\parser\Utils.js:300
parse_child @ E:\cocos\example-cases\packages\creator-luacpp-support\core\parser\Node.js:204

直接导出的 GitHub 插件仓库 creator_project 报错?还是自定义的 creator 工程,正常来说,这个我们测试组测过的,不会出现连自带测试工程的跑不通的情况。

https://github.com/cocos-creator/example-cases
https://github.com/cocos2d/creator_to_cocos2dx
http://www.cocos.com/download 底下的ccc1.8.2 , 2dx 3.16

Timeline的 animation clip还有别的:
postion不准确,
opacity有效果,但是颜色会不对,像是预乘不对
rotation,scale,skew 有效果
width,height,spriteFrame没有效果,这些有没有支持计划,特别是spriteFrame,可以做帧动画

你尝试的 example-cases 是 creator 全部特性的测试例,现在插件没有完全支持全部特性,所以报错。

插件的 creator 测试项目是插件仓库的 creator_project 目录,clone 后直接用 creator 打开 creator_project 目录,可以看到不同的测试场景。这里面的是支持的,测试项目的场景列表是:

spriteFrame 是支持的,用法上参考刚才说的测试工程,导出后的用法参考这里:

https://github.com/minggo/cocos2d-x/tree/creator-cpp-support-test-v315/tests/cpp-empty-test/Classes

团队里人力有限,有优先级更高的事情,打断插件的开发,导致最近插件进展比较缓慢。还是很希望社区能力较强的人,能参与开发,像 @kuovane 一样。

GitHub 上有 readme 介绍,wiki 上有一个指导,issues 和 pr 上也有一些讨论,希望多多关注。

跑了 CreatorAnim 那个场景

缩放的问题,@kuovane 提到了,你可以按照他的方式修复,上面有提到一个透明度的注释,不确定是不是那里的原因,你可以试着分析,[quote=“2627993092, post:46, topic:58661”]
透明度的 bug 可能和这里相关, CreatorReader::parseSprite 方法注释了一段代码,希望有所帮助
[/quote]

position 没发现有明显的问题,有一个测试例消失了,暂时没分析原因

请问这个是什么问题? 我是先在windows系统上弄工程,然后 拷贝到mac电脑上打开,编译出现错误。

检查一下 mac 是否有老版本插件,把现有的 creator to cpp 插件都卸载,在 mac 上重新安装。再尝试导出,相关帖子。

http://forum.cocos.com/t/cocos-creator-mac-windows/59598/6?u=2627993092

插件都是V0.4

我现在暂时不用这个插件了,确实有问题,懒得弄了,我工作机和家用机一起用的,之前插件升级之后总是报错,我直接卸载了creator重新安装就好了,后来在工作机上边编辑的界面,家用机上面打开报找不到各种纹理,可是纹理明明在资源目录的。目前又手撸界面


PolygonCollider 的node 节点的角度变成90度,编辑器显示的也是90度,为什么程序实现还是 水平的?

void PolygonCollideComponent::update()
{
float minx = std::numeric_limits::max();
float miny = minx;
float maxx = std::numeric_limits::min();
float maxy = maxx;
cocos2d::Vec2 tempVec2;
const auto& transform = getNodeToWorldTransformAR();

_worldPoints = _points;
for (size_t i = 0, len = _worldPoints.size(); i < len; ++i)
{
    tempVec2.x = _points[i].x + _offset.x;
    tempVec2.y = _points[i].y + _offset.y;

    auto p = _worldPoints[i] = cocos2d::PointApplyTransform(tempVec2, transform);

    if (p.x > maxx) maxx = p.x;
    if (p.x < minx) minx = p.x;
    if (p.y > maxy) maxy = p.y;
    if (p.y < miny) miny = p.y;
}

_AABB.origin.x = minx;
_AABB.origin.y = miny;
_AABB.size.width = maxx - minx;
_AABB.size.height = maxy - miny;

}
这里面没有角度 变量吗?

这里面有 getNodeToWorldTransformAR 调用了目标 node 的坐标计算 _target->getNodeToWorldTransform(); 有计算到 node 的 Rotation 属性。

确认问题存在的话,麻烦提一个 issues,如果问题得到解决的话,可以提 PR

https://github.com/cocos2d/creator_to_cocos2dx

没有解决。无法改变角度

"void ColliderManager::addCollider(Collider* collider)
{
const auto& result = std::find(_colliders.begin(), _colliders.end(), collider);
if (result == _colliders.end())
{
for (auto& other : _colliders)
if (shouldColider(collider, other))
_contracts.pushBack(new Contract(collider, other));

    _colliders.pushBack(collider);
}

}"

"new Contract(collider, other)" 这个不算内存泄露吗? 没有对应的 Delete Contract???

点击保存。 .plist文件会消失 ,这个bug是什么原因?

场景倒是能够导出,也用C++工程里运行了场景,但是JS代码没有导出,C++工程怎么用代码控制导出场景?是使用JS代码控制,还是用C++代码控制类似于Studio那样?

1赞

从场景的节点树上,通过节点名字获取节点,用 C++ 控制,不支持导出 JS 代码逻辑。