1.千万不要用高版本的unity使用laya的插件,因为他们目前最新的2.0的插件也就支持到unity5.6.x,不然迎接你的将会是最少两个错误。
2.如果之前用的1.x版本的laya转成2.x版本的引擎的话将会出现一片bug,因为2.x很多api不向下兼容,甚至Dictionary都木有了!!所以目前我用的版本是1.x最新版的IDE加上2.0的unity插件(这种搭配灰常好用,用1.x的插件虽然也能导出场景和模型,而且在laya中也可以用,但是打包成微信小程序时就会莫名报错!!)
3.如果场景加载完就不需要对场景及其内部的物体进行操作的话(一般来说那是不可能的)那么就用以下的加载方式:
var scene:Scene = Scene.load(url);
Laya.stage.addChild(scene); //千万不要忘记将场景加入舞台中
4.若场景加载完后需要对场景内部的物体进行其他操作,需要先预加载资源,然后再将场景加载到舞台上,并从资源中找到想要操作的物体,代码如下:
Laya.loader.create(url, Handler.create(this,this.onLoad));
public function onLoad():void
{
var scene:Scene = Laya.loader.getRes(url); //同预加载时的url
Laya.stage.addChild(scene);
Laya.stage.setChildIndex(scene,0); //为了在场景前加上UI界面
var camera:Camera = scene.getChildByName("Main Camera") as Camera;
var target:Sprite3D = scene.getChildByName("Target") as Sprite3D;
console.log("target:"+target.name);
console.log("摄像机:"+camera.name);
//添加平行光----------------------------------
var directionLight:DirectionLight = scene.addChild(new DirectionLight()) as DirectionLight;
//灯光的漫反射颜色
directionLight.color = new Vector3(1.6, 1.6, 1.6);
//灯光的方向(弧度)
directionLight.direction = new Vector3(0.3, -1, 0);
//设置灯光漫反射颜色
directionLight.diffuseColor = new Vector3(0.3,0.3,0.3);
//灯光的环境色
scene.ambientColor = new Vector3(0.6, 0.6, 0.6);
}
以上方法中url可以是本地的相对地址,也可以是网址,并且url也可以是url数组,可以同时加载多个资源,需要注意在通过网址加载资源时,资源一定要与项目放在同一个服务器,否则会因跨域访问而导致加载失败。
问题集锦:
1.添加网格碰撞盒时出现Cannot read property 'btCollisionObject' 错误:
通过点击IDE最左侧的调色盘按钮进入编辑模式,可在菜单中“文件->项目设置”打开项目设置面板,勾选laya.physics3D.js,确定便可