① 用Unity製作了貪吃蛇游戲,想設按「LeftShift」鍵加速的功能,初始速度在Start函數里已設定為0.3(格/秒)
你這里Start函數里的InvokeRepeating並不是控制速度的函數呀,這只是以0.3秒為間隔循環調用Move函數而內已。
以你容的需求來看,要麼就監控輸入EndInvoke,之後重新創建InvokeRepeating循環
要麼就不根本不使用InvokeRepeating,直接在update函數里按一定規則(比如累計時間然後重置)來調用move函數
② unity 3d游戲如何加速iOS8無法裝燒餅,已越獄叉叉助手不管用,注意是游戲加速,不是網路加
前提是必須有越獄 。
進入cydia添加源http://apt.so/fivekbps/
等待源添加成功後 搜索Untiy游戲加速器 安裝成功後 打開游專戲 會出現小浮標,屬點開小浮標 輸入邀請碼30154 可獲得十個積分 就可以免費使用了。
如果安裝後打開游戲沒有出現小浮標 請進入設置里 找到5kb加速器設置選項里 將第一行開關打開重新啟動游戲就可以了。 邀請碼是開發團隊強制的 沒有邀請碼無法使用。望採納。
③ 如何用unity3D對游戲運行性能進行優化
一、遇到麻煩時要調用「垃圾回收器」( Collector,無用單元收集程序,以下簡稱GC)
由於具有C/C++游戲編程背景,我們並不習慣無用單元收集程序的特定行為。確保自動清理你不用的內存,這種做法在剛開始時很好,但很快你就公發現自己的分析器經常顯示CPU負荷過大,原因是垃圾回收器正在收集垃圾內存。這對移動設備來說尤其是個大問題。要跟進內存分配,並盡量避免它們成為優先數,以下是我們應該採取的主要操作:
1.移除代碼中的任何字元串連接,因為這會給GC留下大量垃圾。
2.用簡單的「for」循環代替「foreach」循環。由於某些原因,每個「foreach」循環的每次迭代會生成24位元組的垃圾內存。一個簡單的循環迭代10次就可以留下240位元組的垃圾內存。
3.更改我們檢查游戲對象標簽的方法。用「if (go.CompareTag (「Enemy」)」來代替「if (go.tag == 「Enemy」)」 。在一個內部循環調用對象分配的標簽屬性以及拷貝額外內存,這是一個非常糟糕的做法。
4.對象庫很棒,我們為所有動態游戲對象製作和使用庫,這樣在游戲運行時間內不會動態分配任何東西,不需要的時候所有東西反向循環到庫中。
5.不使用LINQ命令,因為它們一般會分配中間緩器,而這很容易生成垃圾內存。
二、謹慎處理高級腳本和本地引擎C++代碼之間的通信開銷。
所有使用Unity3D編寫的游戲玩法代碼都是腳本代碼,在我們的項目中是使用Mono執行時間處理的C#代碼。任何與引擎數據的通信需求都要有一個進入高級腳本語言的本地引擎代碼的調用。這當然會產生它自己的開銷,而盡量減少游戲代碼中的這些調用則要排在第二位。
1.在這一情景中四處移動對象要求來自腳本代碼的調用進入引擎代碼,這樣我們就會在游戲玩法代碼的一個幀中緩存某一對象的轉換需求,並一次僅向引擎發送一個請求,以便減少調用開銷。這種模式也適用於其他相似的地方,而不僅局限於移動和旋轉對象。
2.將引用本地緩存到元件中會減少每次在一個游戲對象中使用 「GetComponent」 獲取一個元件引用的需求,這是調用本地引擎代碼的另一個例子。
三、物理效果
1.將物理模擬時間步設置到最小化狀態。在我們的項目中就不可以將讓它低於16毫秒。
2.減少角色控制器移動命令的調用。移動角色控制器會同步發生,每次調用都會耗損極大的性能。我們的做法是緩存每幀的移動請求,並且僅運用一次。
3.修改代碼以免依賴「ControllerColliderHit」 回調函數。這證明這些回調函數處理得並不十分迅速。
4.面對性能更弱的設備,要用skinned mesh代替physics cloth。cloth參數在運行表現中發揮重要作用,如果你肯花些時間找到美學與運行表現之間的平衡點,就可以獲得理想的結果。
5.在物理模擬過程中不要使用ragdolls,只有在必要時才讓它生效。
6.要謹慎評估觸發器的「onInside」回調函數,在我們的項目中,我們盡量在不依賴它們的情況下模擬邏輯。
7.使用層次而不是標簽。我們可以輕松為對象分配層次和標簽,並查詢特定對象,但是涉及碰撞邏輯時,層次至少在運行表現上會更有明顯優勢。更快的物理計算和更少的無用分配內存是使用層次的基本原因。
8.千萬不要使用Mesh對撞機。
9.最小化碰撞檢測請求(例如ray casts和sphere checks),盡量從每次檢查中獲得更多信息。
四、讓AI代碼更迅速
我們使用AI敵人來阻攔忍者英雄,並同其過招。以下是與AI性能問題有關的一些建議:
1.AI邏輯(例如能見度檢查等)會生成大量物理查詢。可以讓AI更新循環設置低於圖像更新循環,以減少CPU負荷。
五、最佳性能表現根本就不是來自代碼!
沒有發生什麼情況的時候,就說明性能良好。這是我們關閉一切不必要之物的基本原則。我們的項目是一個側邊橫向卷軸動作游戲,所以如果不具有可視性時,就可以關閉許多動態關卡物體。
1.使用細節層次的定製關卡將遠處的敵人AI關閉。
2.移動平台和障礙,當它們遠去時其物理碰撞機也會關閉。
3.Unity內置的「動畫挑選」系統可以用來關閉未被渲染對象的動畫。
4.所有關卡內的粒子系統也可以使用同樣的禁用機制。
④ unity3d加速移動代碼是什麼
unity3d加速移動代碼是來;
1.MoveSpeed += Time.deltaTime。自
2.transform.Translate(MoveSpeed*Vector3.forward,Space.Self)。
⑤ Unity3D是怎麼提升游戲運行效率的
問題有點大,拆開細問比較合理,另外官方的文檔有簡單提到如何優化的章節。
建議可以先去官網看看他們的在線文檔。
⑥ unity3d加速移動代碼
unity3d加速移動代碼是;
1.MoveSpeed += Time.deltaTime。
2.transform.Translate(MoveSpeed*Vector3.forward,Space.Self)。
⑦ unity 運行一定要3d加速嗎
熱更新,是對hot update 或者 hot fix的翻譯,計算機術語,表示在不停機的前提下對系統進行更改。
hot 就是熱,機器運行會發燙,hot就是不停機的意思。
熱更新,是個很形象的詞,機器燙的時候更新,開著更新。
比如Windows 不重啟的前提下安裝補丁
比如Http伺服器在不重啟的前提下換掉一個文件
那麼對於Unity3D來說,何謂熱更新?
額……這個真相實在是不想講出來,因為很多時候,這個詞都用錯了。
Unity3D是一個客戶端工具,用戶是否重啟客戶端,根本是我們不關心的問題。
很多時候我們用著熱更新這個詞彙,卻不需要真的熱更新。
只有少部分游戲,游戲資源在玩的過程中邊玩邊下,不重啟的前提下變更了資源。
我們不需要用戶不重啟客戶端就能實現資源代碼的更新,我們需要的是用戶重啟客戶端能實現資源代碼的更新。
讓我們暫時放過這個我們的需求連詞彙都用錯了這個基本事實,來總結一下何謂Unity3D熱更新
Unity3D熱更新就是指:用戶重啟客戶端就能實現客戶端資源代碼更新的需求或者功能。
為何熱更新
熱更新,能夠縮短用戶取得新版客戶端的流程,改善用戶體驗。
沒有熱更新:
pc用戶:
下載客戶端->等待下載->安裝客戶端->等待安裝->啟動->等待載入->玩
手機用戶:
商城下載APP->等待下載->等待安裝->啟動->等待載入->玩
有了熱更新
pc用戶:
啟動->等待熱更新->等待載入->玩
有獨立loader的pc用戶:
啟動loader->等待熱更新->啟動游戲->等待載入->玩
手機用戶:
啟動->等待熱更新->等待載入->玩
通過對比就可以看出,有沒有熱更新對於用戶體驗的影響還是挺大的,主要就是省去用戶自行更新客戶端的步驟。
為了方便用戶、留住用戶、進而從留住的用戶身上賺到錢,熱更新如今已經成為了大部分游戲的標配功能。
如果你的游戲不標配這個功能,那麼競爭力就會少一些,無論是主動還是被動,無論是方便用戶還是被標配,你都必須面對熱更新這個課題,雖然這個詞用錯了。
如何熱更新
熱更新是為了讓用戶獲得資源和代碼的變更,這里的代碼不是指真的代碼,用戶不要代碼,他要的是變化的業務邏輯。實現變更的具體過程是首先查並更新本地資源和業務邏輯,如需下載則下載。然後啟動時資源均從本地資源創建,業務邏輯從本地執行。
Unity3D提供了一種機制AssetBundle,可以滿足所有資源的比對下載載入,但是assetbundle每平台分別打包對於多平台項目而言比較麻煩,是一個明顯的短板,而且assetbundle不能脫離unityeditor產生,也是一個麻煩,項目大了話,多人合作,把所有資源都放入assetbundle明顯降低效率。
對於代碼,Unity3D是不提供變更機制的。但是Unity3D執行核心是Mono,也就是dotnet,dotnet有一種符號反射機制,可以直接載入一個dll,然後反射出其中的類型進行操作。符號和反射的主要問題是有些平台不能使用,比如ios wp8。另外dotnet有一種emit機制,可以運行時調用編譯器對代碼進行編譯,他的問題也是平台不支持。
以上兩點是Unity3D免費贈送給你的幫助
如果不能滿足你的需求,你就需要自己搞定三個模塊:
資源下載模塊
當assetbundle不能滿足需要時,我們需要自己建立檢查更新需要則下載的機制,也就是資源下載模塊。
這個資源下載模塊應該有一個版本生成工具,我們將一組文件生成一個一個版本待下載。
有一個Unity3D用的下載模塊,下載模塊會首先檢查伺服器上的版本信息,和本地信息做比對,需要的文件則下載。
資源載入模塊
然後需要建立自己的從下載保存在本地的文件中載入出資源的機制,也就是資源載入模塊。
資源載入模塊負責從下載的文件中載入出資源。
如果你希望游戲帶有一份初始資源文件,這里有兩種思路
一種是資源載入模塊直接提供從包內文件和下載文件兩種載入路徑
一種是游戲第一次啟動時,將包內文件全部到下載文件
腳本模塊
當符號反射不能滿足需求時,業務邏輯更新就只有套用腳本語言這一條路,也就是腳本模塊。
雖然dotnet世界裡有很多腳本可以用 ironRuby ironPython,可是在unity這個特定環境下全部不可用。
你可以使用的一個選擇是lua,這個由魔獸世界採用作為界面腳本,從而紅遍整個游戲行業,十年經久不衰的腳本。
unity有了很多lua的綁定庫,也有了unilua這樣的pure c#移植實現。
你還有一個選擇是C#Light/Evil,他是C#語法的,pure c#實現的一門新生腳本語言,就是為了Unity3D邏輯熱更新而生。
⑧ 有沒有支持unity加速的游戲插件
加速效果可以自己寫代碼來實現。包括設置枚舉控制量。通過枚舉控制量來控制游戲進程加速程度
⑨ 如何在Unity中優化游戲聲音和加速游戲
流暢的游戲玩法來來自流暢的幀率,衡源量運行表現的一個基本工具是Unity內置分析器以及Xcode分析工具。
操作
移除代碼中的任何字元串連接。
用簡單的「for」循環代替「foreach」循環。由於某些原因,每個「foreach」循環的每次迭代會生成24位元組的垃圾內存。
更改我們檢查對象標簽的方法。用「if (go.CompareTag (「Enemy」)」來代替「if (go.tag == 「Enemy」)」 。在一個內部循環調用對象分配的標簽屬性以及拷貝額外內存。
對象庫為所有動態對象製作和使用庫,這樣在運行時間內不會動態分配任何東西,不需要的時候所有東西反向循環到庫中。
不使用LINQ命令,因為它們一般會分配中間緩器,而這很容易生成內存。