EasyAR4同時使用多個稀疏空間地圖

EasyAR4的稀疏空間地圖支持同時加載多個稀疏空間地圖並使用。

使用結構

多個稀疏空間地圖使用時候結構其實就是在場景中有多個SparseSpatialMap遊戲對象,每個遊戲對象對於一個具體的稀疏空間地圖。

從代碼上也不復雜,設置每個SparseSpatialMap的ID,名稱,事情和其他設置。然後,統一用SparseSpatialMapWorkerFrameFilter的.Localizer.startLocalization()方法進行本地化即可。

//獲取地圖信息,list是地圖信息字符串列表
var list = game.LoadMapInfos();
mapStatus = new string[list.Count];

for (int i = 0; i < list.Count; i++)
{
    var info = list[i].Split(',');
    var map = Instantiate(prefab);//生成稀疏空間地圖
    map.SourceType = SparseSpatialMapController.DataSource.MapManager;
    map.MapManagerSource.ID = info[0];//設置地圖ID
    map.MapManagerSource.Name = info[1];//設置地圖名稱
    map.MapWorker = mapWorker;

    //地圖加載事件
    map.MapLoad += (mapInfo, isSuccess, error) =>
    {
        if (isSuccess)
        {
            text.text = mapInfo.Name + "-->" + "map load success." + Environment.NewLine + text.text;
        }
        else
        {
            text.text = mapInfo.Name + "-->" + "map load fail." + Environment.NewLine + text.text;
        }
    };
    //定位成果事件
    map.MapLocalized += () =>
    {
        text.text = map.MapInfo.Name+"-->"+"Localized."+Environment.NewLine+text.text;
    };
    //停止定位事件
    map.MapStopLocalize += () =>
    {
        text.text = map.MapInfo.Name+"-->"+"Stopped."+Environment.NewLine+text.text;
    };
}
//開始本地化地圖
mapWorker.Localizer.startLocalization();

使用效果,可以同時加載多個稀疏空間地圖,但是,同一時間,只有一個地圖可以定位(MapLocalized)。

加載的時候,所有地圖的MapLoad事件都馬上觸發,但是,只有一個地圖的MapLocalized事件能被觸發。一旦其他地圖觸發MapLocalized事件,之前地圖的MapStopLocalize必定被觸發。

演示視頻:https://www.bilibili.com/video/BV1x5411Y7cz/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章