[]Starling项目需要注意哪些问题?

已邀请:

cuixueying

赞同来自:

1.ATF格式的压缩纹理资源不支持,转换H5的时候需要还原成原来的资源, ATF是Stage3D内置支持的纹理压缩格式,并非一个通用的纹理压缩格式,建议转换回png或jpg的纹理格式。

2.Embed资源不支持,需要使用AssetManager来管理资源,或者使用Loader, URLLoader等自己实现异步加载
Starling内置了一个资源管理类AssetManager,建议使用AssetManager的enqueue来无缝调入各种游戏需要的资源。如果需要自己实现自己的Loader或者URLLoader的话,需要参考Starling内部AssetManager对资源处理的实现。

3. 需要注意Starling TextField内字体的实现效果.
Starling的TextField通过Flash的TextField画到纹理来实现,LayaBox的StarlingToHtml5项目使用WebGL的Canvas来实现字体效果, LayaBox已经实现了绝大部分的效果,但极少部分效果还需要在字体显示到游戏中后(比如浏览器无法找到字体等)再根据显示情况进行手工的微调。

4. 只要是3D程序,必须在入口类内引用Context3D
如果是3D项目(含Starling的项目),一定要在游戏入口类里加入
import flash.display3D.Context3D;
不引入则是2D项目,会把3D相关的库编译时剔除掉。

5. Starling的扩展与修改Shader,必须进行相应的修改。
如果程序内全部是使用Starling内部的渲染模式与组件,则无需考虑修改shader相关的部分,内部已经进了AGAL2GLSL的转换。 对于高级用户,如果修改了Starling内置的AGAL,或者新加入了AGAL,则必须对修改或新写的AGAL做对应的转换GLSL处理,可参考Starling内部的AGAL2GLSL修改实现。

6. Starling底层Stage3D的CullMode与WebGL的CullMode是相反的。
如果程序内部有关于context3D.setCulling(Context3DTriangleFace.BACK)类的设置,则必须条件编译成Context3DTriangleFace.FRONT,反之亦然。

7. Starling本身会用到一些flash内BitmapData,这些在Laya目前的版本中暂不支持。
比如以下代码:
var map:BitmapData = new BitmapData(width * scale, height * scale, false);
map.perlinNoise(20*scale, 20*scale, 3, 5, false, true);
var texture:Texture = Texture.fromBitmapData(map, false, false, scale);
用到了BitmapData的perlinNoise接口,这个接口Laya暂不支持,我就就必须用静态的纹理来替换这个动态生成的纹理。类似于如下的代码:
var texture : Texture = Game.assets.getTexture( "perlin_noise" );

8. 其它LayaFlash 2D内必须要遵守的程序规则或转换规则。

要回复问题请先

商务合作
商务合作