creator 2.2.0 版本, 材质在原生层无法使用

cocos creator 版本 2.2.0.

问题描述:

  1. 参考 3D 的材质文档制作, 在 Web 下可以正常使用;
  2. 打包到原生的时候(iOS)平台, 在 Creator 工具内提示:

The referenced asset used in “db://assets/resources/ground/HighlightMaterial.mtl” is not found, it may have been deleted. Detailed information:
Used in object: “HighlightMaterial”
uuid: “c3ecb4a7-5524-4a79-bcdd-cd78cbe74e6a”

  1. 在真机环境运行的时候, 加载使用该材质的 Prefab 的时候, 闪退, xcode 日志;

[ERROR] (/Users/xxxxx/projects/aaaa/code/app/build/jsb-default/frameworks/cocos2d-x/cocos/scripting/js-bindings/jswrapper/v8/Object.cpp, 534): Invoking function (0x282a0f300) failed!
ERROR: Uncaught TypeError: Cannot read property ‘setBlend’ of null, location: src/cocos2d-jsb.d1192.js:0:0

请问现在如果我想在原生层使用 shader, 该怎么办呢?

确认了, 工程中存在材质文件, 并没有像 creator 工具说的, 丢失了.

help me, please…

如果是目前 creator 版本的问题, 我就忽略掉了, 等之后完善了, 我再继续使用材质这个功能. 但是如果目前有可解决的办法, 麻烦告知一下, thx.

@creator 引擎组的大佬们.

你用引擎内置的材质试试。比如

首先感激, 但是内置的材质是没有问题的.

  1. 上面的问题我没有完全解决, 但是用了其他方式绕过, 把制作的材质删掉, 然后重新生成这时打包是可以用了(此时只有 1 个材质);
  2. 但是之后创建了第二个材质的时候, 诡异的事情就发生了, 新创建的材质在被添加到 Sprite 组件上(其他渲染组件我没测试), 就无法修改材质的 Effect, 一直固定的都是第一个材质的 Effect, 即使从 Sprite 上删掉, 也无法更换材质的 Effect, 所以目前直接通过编辑器挂材质的路子我是走不通了;
  3. 现在使用是通过 cc.loader 加载材质资源, 然后再 setMetaterial, 可用;

这里反馈两个问题:

  1. 原生和 Web 的 shader buildin 至少 cc_time.x 得到的值不同, 原生一直都是 1;
  2. ts 的 d.ts 没有接口声明, 而且与所给文档有些出入, 文档是 Creator 3D 的那篇材质文章(我目前使用 2.2.0).