最近开始搞Laya3D,立此贴对所踩的坑作下备忘
1. 场景编辑完后,应当按一下F8编译一下,这样有些运行时可能产生的错误就会在编译后被提示。
2. 2.x的prefab如果多个存在于场景中,prefab中指定的变量名居然是冲突的,这个问题导致我不敢再在prefab直接使用var了,很好奇官方这是啥意思,这样一来,引用场景中的对象就变得有点麻烦,只能学下cocos creator封装个find方法通过查找的方式来获取对象了,使用方式为 const node:Laya.Image = find("nodeA/nodeB/nodeC", this.owner);
/**
* 在对象或子对象中查找
*/
export function find(path: string, parent: Laya.Node): any {
const array: Array<string> = path.split("/");
while (parent != null && array.length > 0) {
const name: string = array.shift();
parent = parent.getChildByName(name);
}
return parent;
}
3. 编辑模式下runtime,目前发现的是,在分离模式下,这个东西只适合指定scene的脚本,对prefab是没有用的,prefab需要以添加组件的方式来指定脚本
4.Laya3d中2d与3d混合问题,在3D游戏中,如果想用2D图片当作背景,那么需要将Camera的clearFlag 设置为Laya.BaseCamera.CLEARFLAG_DEPTHONLY,否则默认中3D场景会生成一个纯蓝色的天空盒将Laya.Scene3D后面的所有东西都给挡住。
5. 关于U3D的发布插件,在导出Prefab的时候,一定将场景里的摄像头和灯光删掉,只留下要被发布的模型文件,不然这个摄像头会制造一个坑
6. 在 IDE 中编辑场景或组件时,如果一个容器使用了约束指定宽高而非具体值,并且它的子节点中含有同样未指定宽高的节点且没有为这个子节点指定有效资源时(如空的 Image),那么运行时这个容器的尺寸计算将会出现错误。