1. 程式人生 > >Laya載入unity場景踩坑記錄(AS3語言)

Laya載入unity場景踩坑記錄(AS3語言)

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陣列,可以同時載入多個資源,需要注意在通過網址載入資源時,資源一定要與專案放在同一個伺服器,否則會因跨域訪問而導致載入失敗。