1. 程式人生 > >cocos-Lua設定熱更搜尋路徑的理解(看公司程式碼的一些小想法)

cocos-Lua設定熱更搜尋路徑的理解(看公司程式碼的一些小想法)

 local serchPaths = cc.FileUtils:getInstance():getSearchPaths();
 local pathToSave = cc.FileUtils:getInstance():getWritablePath();

其中的serchPaths 為遊戲載入檔案的路徑

pathToSave 為熱更時下載到手機的檔案路徑

 local workPath = serchPaths[#serchPaths] 
 serchPaths[#serchPaths+1] = pathToSave;
 serchPaths[#serchPaths+1] = pathToSave .. "src/";
 serchPaths[#serchPaths+1] = pathToSave .. "src/Games/";
 serchPaths[#serchPaths+1] = pathToSave .. "src/Lobby/";
 serchPaths[#serchPaths+1] = pathToSave .. "src/Lobby/src/";
 serchPaths[#serchPaths+1] = pathToSave .. "src/Lobby/res/";
 
 serchPaths[#serchPaths+1] = "src/";
 serchPaths[#serchPaths+1] = "src/Games/";
 serchPaths[#serchPaths+1] = "src/Lobby/";
 serchPaths[#serchPaths+1] = "src/Lobby/src/";
 serchPaths[#serchPaths+1] = "src/Lobby/res/";
 cc.FileUtils:getInstance():setSearchPaths(serchPaths);

上面中第一段加了pathToSave的為絕對路徑,第二段為相對路徑

因為一開始的時候第一段的路徑是為空,所以軟體搜尋的路徑為第二段,使用的都是第二段的檔案

其實我在想一問題:熱更好後軟體是使用哪一個路徑下的檔案?第一個絕對路徑不用也可以熱更,玩遊戲,為什麼還要寫呢?

這兩個問題,我覺得首先要明白Lua類中的載入的原理,在載入過程中有兩個類檔案,名字都為main,這個時候,軟體只用載入的,忽略掉後面的檔案

我們搜尋路徑是先從第一段開始,之後再進行第二段,這就表明了我們載入檔案是先從絕對路徑開始,也就是熱更下來的所有都可換,包括熱更的介面,第二次玩遊戲是檔案都是先用熱更下來的

第二個問題:當第一段路徑不要是時候,軟體先使用的路徑為預設的一開始載入的路徑,等一開始的路徑沒有所需的檔案才會去搜索第一段的路徑,也就是說熱更下,下載的檔案,也就是說你的軟體一開始打包的軟體的檔案永遠不會換隻是更新的打包是沒有放進去的檔案

相關推薦

cocos-Lua設定搜尋路徑理解(公司程式碼一些想法)

local serchPaths = cc.FileUtils:getInstance():getSearchPaths(); local pathToSave = cc.FileUtils:getInstance():getWritablePath(); 其中的s

更新-----為何使用lua進行

  事實上我們在安卓端是可以使用c#jit的,但是我們在ios上的程式碼是AOT(預先編譯,靜態編譯)的,不能用c# jit(實時編譯,即時編譯)。   ios不能用c#熱更是因為啟動了CPU的No eXecute bit,簡單說就是ios不允許更改程式碼,更新程式碼必須重新提安裝包進行稽核,AppStor

Linux動態庫載入失敗/設定執行時搜尋路徑

程式執行時有以下錯誤 ./dom1: error while loading shared libraries: libmemcached.so.11: cannot open shared object file: No such file or direc

Lua用於遊戲運行期(不重啟遊戲客戶端)

服務端 道理 IT path 客戶 內存 每次 調用 清除 lua在Unity的熱更新中,一般是每次客戶端啟動的時候檢查是否有更新,然後加載。 如果要在運行期熱更,跟服務端做不停服熱更(比如java 用類構造啟動java腳本本身,或者luaJ)是一個道理。

lua框架之XLua

eric 開發 rap ons 框架 ++ 判斷 org ati 框架介紹 xLua是當下最流行的unity熱更方案之一,作者是騰訊的車雄生前輩,自2016年初推出以來,已經在騰訊的多款遊戲項目上應用,目前xLua已經開源到了GitHub。xLua最大的特色是不僅支持純lu

為pycharm設定搜尋路徑

上面這張圖片已經很可以說明問題了 然後你還可以是使用程式碼來列印一下你的python搜尋路徑 import sys print(type(sys.path)) for p in sys.path: print(p) 當然你還可以通過sys下面的path來新增搜尋路

新增lib庫自動搜尋路徑到/etc/ld.so.conf,然後ldconfig使設定生效

[email protected]:~$ sudo vim /etc/ld.so.conf比如將當前路徑作為lib連結預設搜尋路徑,include /etc/ld.so.conf.d/*.confinclude /usr/local/libinclude .[em

pkg-config的用法及庫搜尋路徑設定

一、編譯和連線         一般來說,如果庫的標頭檔案不在 /usr/include 目錄中,那麼在編譯的時候需要用 -I 引數指定其路徑。由於同一個庫在不同系統上可能位於不同的目錄下,使用者安裝庫的時候也可以將庫安裝在不同的目錄下,所以即使使用同一個庫,由於庫的路徑的 不同,造成了用 -I 引數指定

【Python】sys.path.append動態新增搜尋路徑設定

如何將路徑“永久"新增到sys.path? sys.path是Python的搜尋模組的路徑集,是一個list 可以在python 環境下使用sys.path.append(path)新增相關的路徑,但在退出python環境後自己新增的路徑就會自動消失了! 可以使用以下命令輸入當前python 的搜尋

交叉編譯時候如何設定連線庫的搜尋路徑

交叉編譯的時候不能使用本地(i686機器,即PC機器,開發機器)機器上的庫,但是在做編譯連結的時候預設的是使用本地庫,即/usr/lib,/lib兩個目錄。因此,在交叉編譯的時候,要採取一些方法使得在編譯連結的時候找到需要的庫。 首先,要知道:編譯的時候只需要標頭檔案,

LaTeX自定義巨集包與類檔案預設搜尋路徑設定方法

對於自定義的LaTeX巨集包與類,在呼叫時可以通過在命令\documentclass{}與\usepackage{}命令中指定完整路徑或者相對路徑,這樣確實可以呼叫,但是編譯時總是有煩人的警告資訊,讓人不爽。還好有一個辦法可以解決。 作業系統:Ubuntu 16.04 64位桌面版 LaTeX工具:TeXs

LaTeX自定義巨集包與類檔案的預設搜尋路徑設定方法

  對於自定義的LaTeX巨集包與類,在呼叫時可以通過在命令\documentclass{}與\usepackage{}命令中指定完整路徑或者相對路徑,這樣確實可以呼叫,但是編譯時總是有煩人的警告資訊,讓人不爽。還好有一個辦法可以解決。 作業系統:Ubuntu 16.04 64位桌面版

CCTMXTiledMap中使用.tmx地圖編輯器需要注意的路徑問題導致的後報錯

問題:CCTMXTiledMap:create(....tmx)建立地圖。問題是熱更xxx.tmx檔案,遊戲中更新完程式碼後,在進入相關的功能介面直接閃退。 原因:CCTMXTiledMap 中 在建立並解析.tmx檔案時,使用的圖片的路徑是.tmx同級的路徑下的圖片。雖然

cocos2dx 設定搜尋路徑問題

今天開發專案中遇到一個奇葩的問題,解析cocostudio 匯出的csb檔案的時候,不論cocosstudio怎麼修改,解析匯出的csb檔案就是不起作用,還是原來的樣子,百思不得其解,還以為cocos

Lua 自定義模組 需要新增搜尋路徑

如果是一個 *.LUA 的檔案, 裡面用到了自己寫的庫, 或者第三方寫的庫, 但是你不想把它放到 lua 的安裝目錄裡, 則在程式碼裡面可以指定require搜尋的路徑。    package.path = '/usr/local/share/lua/5.1/?.lua;/h

cocos2d-x 2.2.0 控制lua指令碼載入時的搜尋路徑

        在lua語言中,require語句搜尋模組有一個內建的順序,並且可以通過package.path來維護模組的搜尋策略。         但是在cocos2d-x中,不是這樣!         cocos2d-x過載了原本的lua的require載入方式。

解析MATLAB中設定當前工作目錄與搜尋路徑設定的區別

首先說明下,我用的是MATLAB2016a。 在執行程式中,我發現一個奇怪的現象:就是我要使用的自定義函式及需要匯入的資料均不在我的當前工作目錄中,但是程式仍然可以執行,經過我的再三探究,原來在程式的執行過程中,與你設定的當前工作路徑沒有一毛錢的關係,主要是與你設定的搜尋路

linux設定環境變數動態庫搜尋路徑

1.  新增環境變數 在/etc/profile檔案下增加如下欄位: FFMPEG=/usr/local/ffmpeg X264=/usr/local/x264 YASM=/usr/local

lua require 搜尋路徑

lua引用第三方庫時,設定搜尋路徑   package.path = '/usr/local/share/lua/5.1/?.lua;/home/resty/?/init.lua;'    --搜尋lua模組 package.cpath = '/usr/local/lib/

Unity資源

out crypto fig catch 委托 assets ice 配置文件 compare 一、創建Bundle打包工具ExportAssetBundles using UnityEditor; using UnityEngine; public clas