【小松教你手遊開發】【unity實用技能】unity性能問題查找方法
mono主要是代碼問題,各種解決方案在其他地方會講到,首先就是解決每個尖峰,這個會導致gc,mono堆內存申請等問題。
1.先用cube來測
手機上跑一局看看數據
可以看到在這裏申請了內存,可以看到。這時候首先有個向下的尖峰,這個是執行了一次gc。然後mono發現,你代碼裏申請的內存已經超出現在的堆內存,所以只能再申請一塊。
所以這事後需要找到這個時刻是在幹什麽。
2.用Profiler來測
這時候把剛才的那一局在editor上跑一遍。大概找到相同位置
對應著上面cube的圖可以找到profiler相應的位置
就可以大致找到是哪裏在申請內存。
或者這時候也可以用uwa的工具來測。
找到對應消耗的函數
【小松教你手遊開發】【unity實用技能】unity性能問題查找方法
相關推薦
【小松教你手遊開發】【unity實用技能】unity所有特殊文件夾的用途(轉自雨松momo)
unity實用技能這裏列舉出手遊開發中用到了所有特殊文件夾。 Unity3D研究院之手遊開發中所有特殊的文件夾 - 雨松MOMO程序研究院 1.Editor Editor文件夾可以在根目錄下,也可以在子目錄裏,只要名子叫Editor就可以。比如目錄:/xxx/xxx/Editor 和 /Editor 是一
【小松教你手遊開發】【遊戲渲染】單色shader,紋理shader
無單色shader Shader "ChrisShader/OneColorShader" { Properties { _Color ("color", Color) = (0,0,0,0) } SubShader {
【小松教你手遊開發】【unity實用技能】角色頭部跟隨鏡頭旋轉
無這個在端遊上比較場景,在角色展示的時候,當攝像頭在角色身邊上下左右旋轉時,角色頭部跟隨鏡頭旋轉。如天涯明月刀等。 這個在手遊上比較少見,不過實現也沒什麽區別。 首先一般情況下,找到模型的頭部節點,直接用lookAt指向camera就可以了,不過一般需求不會這麽簡單。 比如說,超過頭部扭動極限,頭部需要插值回
【小松教你手遊開發】【unity實用技能】unity性能問題查找方法
無這次先說一下mono內存的性能問題查找方法mono主要是代碼問題,各種解決方案在其他地方會講到,首先就是解決每個尖峰,這個會導致gc,mono堆內存申請等問題。 1.先用cube來測 手機上跑一局看看數據 可以看到在這裏申請了內存,可以看到。這時候首先有個向下的尖峰,這個是執行了一次gc。然後mono發現,
【小松教你手遊開發】【unity系統模塊開發】Unity5.5.2UI打包AssetBundle
無 unity 系統模塊 之前已經有幾篇文章寫打包AssetBundle,但畢竟沒有實際在項目中寫過都寫的比較淺。 剛好最近項目更新Unity5.5.2就順便由我來更新ui打包流程 這裏就把這次的經驗寫一下 這裏還是稍微解釋一下打包的基本目的: 打包ui就是把你做的界面打包出來成assetbund
【小松教你手遊開發】【unity實用技能】給每個GameObject的打開關閉加上一個漸變
無 手遊開發 在遊戲開發中,經常會因為直接將GameObject,setActive的方式打開關閉,這種方式效果太過生硬而給它加上一個Tween 可能是AlphaTween或者ScaleTween。 再加上一個PlayTween來做控制。 這樣子需要在每個GameObject上加上這幾個Compone
【小松教你手遊開發】【unity實用技能】計算目標物體是否在自己的扇形視野範圍
無 51cto 在做遊戲開發中經常會需要到計算扇形的視野或者是受擊範圍的時候。 其實這個分為兩部分, 第一部分是在扇形距離範圍內(也就是不考慮角度,其實是圓形範圍內) 第二部分是扇形角度範圍內 第一部分很簡單,Vector3.Distance(a, b);計算距離 下面講講第二部分,扇形角度範圍內。
【小松教你手遊開發】【unity系統模塊開發】熱更
無 手遊開發 現在的手遊項目如果沒個熱更新叠代根本跟不上, 特別是像我們項目做mmo的更是需要經常改動代碼。 而現在的項目一般會選擇用lua的方式實現熱更新 不過我們項目由於歷史原因沒有使用,用的是另外一種方案 在項目裏的所有GameObject都不掛腳本(NGUI腳本就通過代碼的方式掛上),自己寫的
【小松教你手遊開發】【unity實用技能】線性差值計算實現
無 手遊開發 其實這個unity本身就有的函數Mathf.Lerp(),為什麽還要自己實現呢。 有一個原因就是這個函數返回的是float型,float型如果數字非常大,轉出int時會有精度丟失,也就是轉出來的值不對。 而且非常簡單。 看下公式 public int Lerp(int a,int b,i
【小松教你手遊開發】【unity系統模塊開發】Unity Assetbundle打包筆記
無 手遊開發 *最近項目更新了Unity5.5.2,順便更新了項目的ui打包,也更新一下這邊的筆記 首先打包分為兩部分,一部分是打包成Assetbundle包,一部分是從Assetbundle包解包出來成為可用的資源。 首先說第一部分 打包 所有資源都可以打包,甚至不是資源(一些數據)也可以打包,只要
【小松教你手遊開發】【unity實用技能】NGUI字型描邊
NGUI的UILabel中實現字型的描邊是通過以方形的方式對字型網格頂點偏移一定位置後作為其描邊網格。以這種方式描邊在邊角處會生硬,描邊不均勻問題,特別是在比較大的字型描邊時偏移越大這種生硬,不均勻程度越明顯。處理這種描邊一可以通過改進shader的方式來做調整,這裡我介紹林一種新的方式:以圓形方式對字型網
【小松教你手遊開發】【unity實用技能】Google Protocol Buffer(protobuf) 使用和研究
由於專案使用的是c#,所以下面的範例也是用於c# 一、安裝Google Protocol Buffer 二、編寫一個bat檔案處理檔案,批量生成c#檔案,如: @echo off SETLOCAL ENABLEDELAYEDEXPANSION rem 查詢檔案
【小松教你手遊開發】【unity實用技能】u3d 當你發現一個函式被呼叫,但是完全找不到是誰呼叫的時候
一般有可能是通過函式名作為字串呼叫,但是這種在除錯時也是能跟蹤到 而如果連除錯都跟蹤不到的時候,看看是不是動畫效果。 如果是的話可能是在那個特效中呼叫。 這樣的話除錯也跟蹤不到。 這種時候要找的話要定位到對應的GameObject上,開啟Animation,檢視 長這
【小松教你手遊開發】【系統模組開發】圖文混排 (在label中插入表情)
本身ngui是自帶圖文混排的,這個可以在ngui的Example裡找到。但是為什麼不能用網上已經說得很清楚,比如雨鬆momo的http://www.xuanyusong.com/archives/2908 最重要的一點就是我們肯定不會選擇一個完整的中文字型檔,動態字型無辦法
【unity實用技能】記一次失敗的藍圖接口開發失敗經驗
返回值 。。 cat you 值類型 fff nts cor oci 本來想寫一個批量控制widget開關的接口,想寫一個像append一樣的可加pin的接口 首先還是找到這個接口得代碼 可以看到關鍵的點就是 CommutativeAssociativeBinaryOper
【unity實用技能】u3d 獲取屏幕的寬高
無想搞個全屏Sprite,獲取Screen.Width什麽的都不對。 因為這個跟你的Camera的aspect有關。 所以有個很簡單的方法 首先一般你的項目都會限度是以寬還是高做基準來拉伸 我們是橫版遊戲,所以是寬做基準 我們的寬定的標準值為1334. 所以是這樣 public int GetScreenHe
【unity實用技能】unity3d 陀螺儀控制camera移動旋轉
無https://docs.unity3d.com/ScriptReference/Gyroscope.html unity 官方文檔就很清楚,只有一點要註意: 所有教程都教你怎麽用 input.gyro.attitude 但是這個表示的是空間中的位置,首先你是想做像王者榮耀開頭晃動攝像機的效果,需要把上個位
【unity實用技能】unity編輯器工具之加載預制(Prefab)和場景(Scene)
無在unity裏做打包或者幫策劃美術做工具的時候經常會需要把Prefab拉出來或者場景打開做檢驗工作 其實這個在上一篇在ui打包的文章裏有提到,不過重點不同,上篇重點是打包,這篇的重點是把裏面的一個小知識點拉出來講一講 接下來就講講兩者分別怎麽做 一、把預制Prefab拉出來 就是像我們平時把預制拉到這個地方
【unity實用技能】unity在遊戲中更換角色的shader,比如加個流光
無原本想著這個功能怎麽實現,剛好在項目裏看到這裏記錄一下。 首先項目的模型裏會有一個基本的Material,這個就是美術出給你的模型的材質。 可能有的需求是在遊戲中觸發一個事件,你身上加個流光或者描邊等效果。 我們知道這些效果如果要表現在身上,用特效是不好看的,要用Shader去表現。 這時候就需要你換一個S
【unity實用技能】NGUI圖片鏡像
無NGUI做UI的話,有個功能很常用,比如: 這樣的一個界面,如果大圖的話一個圖集都放不下幾張,這時為了省資源,美術會把這個圖切9宮。不過這樣依然很大,這時就會提出,如果這個圖是左右相同的話,左右只出一半,另一半程序自己拼,上下相同只切上面,下面程序拼,上下左右相同的話出左上角,其余自己拼。像這個就會這麽出圖