Laya載入unity場景踩坑記錄(AS3語言)
阿新 • • 發佈:2018-12-12
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陣列,可以同時載入多個資源,需要注意在通過網址載入資源時,資源一定要與專案放在同一個伺服器,否則會因跨域訪問而導致載入失敗。