最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

關于Defold動態(tài)加載圖片

2023-04-08 02:15 作者:Fuxfantx  | 我要投稿
  1. 拿到一張圖片(PNG),想要顯示出來,可以讓GUI Node顯示,或者讓Sprite顯示。

  2. GUI Node顯示:將圖片文件加載為紋理。先用sys.load_resource()將圖片文件轉換成String,然后用image.load將圖片String轉換為圖片Lua表,最后用gui.new_texture()將圖片Lua表轉換為GUI紋理。把紋理綁定在GUI Node上,完成顯示。

    需要注意,GUI Node恒定遮擋游戲世界的元素。因此如果你的游戲不是100%用GUI Node實現的話,按這個方法就不能實現“封面鋪底”一類的效果。

  3. Sprite顯示 法一

    首先,想個辦法讓你的圖片資源能出現在磁盤上。對于玩家導入曲目的音游,好說;對于制作方收錄曲子的音游,設為Bundle Resource(可以自己實現一個壓縮再解壓/加密再解密什么的,也可以源文件存儲)。

    然后,用Lua io庫打開文件,再用Defold-PNG原生擴展將打開的PNG文件轉換成材質Buffer,另外手搓一個材質的header。

    最后直接用resource.set_texture()把目標Sprite的材質改掉。

  4. Sprite顯示 法二

    轉變思路:Sprite原生只支持Atlas,那就嘗試把圖片轉換成Atlas資源。轉換比較簡單,用Defold的編輯器創(chuàng)建一個Atlas,再加入我們的PNG圖片即可。

    第一反應是把Atlas文件存到Custom Resource中,然后嘗試用sys.load_resource()的加載結果作為Sprite的image屬性;或者直接上go.property("my_image",resource.atlas(path))再借助self userdata取得"my_image"屬性的值,認為這個值是指向成品圖集的hash,設置為Sprite的image屬性。

    這一堆都是不可行的。因為Custom Resource最終是原樣打包不帶任何檢測,而編輯器產生的xxx.atlas文件并不是成品圖集,僅僅是一個配置文件。。。。。。。

    因此必須讓最終可能加載的Atlas都進入靜態(tài)資源樹內,使其在打包時被轉換為成品圖集。這里有一計:

    A. 準備index_01.go,index_02.go之類的Game Object文件,這些Game Object下的組件是各個Sprite,將它們的image屬性設置成最終需要加載的Atlas;

    B. 準備一個index.collection,集合內對每一個index_**.go添加一個Factory,這些Factory全部設為Load Dynamically(其實我們根本不打算讓index.collection下面的Factory創(chuàng)建index_**.go的實例)

    C. 將這個index.collection扔到啟動集合內。

    再之后,用resource.atlas()加載的Atlas就是成品圖集了。用go.property()載入Atlas,然后把Atlas的Hash轉移到目標Sprite的image屬性,最后用sprite.play_flipbook()使設定的圖片可以顯示出來。

    go.property(id,value)的value可以是一個提前建好的全局變量,這樣Atlas的載入就動態(tài)起來了。

下次講講Defold的腳本文件加載。


關于Defold動態(tài)加載圖片的評論 (共 條)

分享到微博請遵守國家法律
滨海县| 龙游县| 正宁县| 五指山市| 太原市| 弥勒县| 枣阳市| 仙游县| 嘉峪关市| 秦皇岛市| 郎溪县| 江安县| 惠水县| 吴川市| 桃园县| 鸡东县| 云安县| 章丘市| 蒲江县| 进贤县| 辉县市| 东安县| 南溪县| 石台县| 策勒县| 哈巴河县| 棋牌| 浠水县| 静宁县| 平凉市| 民权县| 县级市| 张掖市| 遂宁市| 宜兰县| 东明县| 伊春市| 中牟县| 四会市| 嫩江县| 鲁山县|