Unity에서 Profiler 결과 출력

3215 단어 Unity3DC#Unity2DUnity
필자 환경은 여러 사정에 따라 Unity4.3.x입니다.

소개



Unity에서 만든 앱의 디버깅 및 성능 검사에 Profiler를 사용하고 있다고 생각합니다.
(다른 기기용으로 이러한 응용 프로그램을 사용할 수도 있다고 생각합니다)

하지만 Unity의 Profiler 이외라면 프로파일링 결과를 출력하여 공유할 수 있죠?
하지만 Unity의 Profiler에는 이러한 빈번한 항목이 보이지 않는다···.

그래서, 출력할 수 없는지를 조사해 보았습니다.
(쓰카, 레퍼런스라든지 보았지만 자세한 것은 쓰지 않았던 생각이 든다)

흔한 방법



스크린 샷 (ェ
구두

UnityEngine.Profiler 사용



아까는 농담이고, 제대로 있습니다.

사용법은 이런 느낌.

OutputProfilerLogs.cs
using UnityEngine;

private void Awake()
{
    // ログ出力先を指定
    Profiler.logFile = "test.log";
    // 出力を有効化
    Profiler.enabled = true;
}

private void OnDestroy()
{
    // 無効化
    Profiler.logFile = "";
    Profiler.enabled = false;
}

private void OnApplicationQuit()
{
    // 無効化
    Profiler.logFile = "";
    Profiler.enabled = false;
}

이렇게 하면 지정한 파일(자동 생성)에 프로파일링 결과를 출력해 줍니다.
(PC상에서는 프로젝트 루트 폴더 바로 아래에 출력되어 있을 것입니다)
결과는 다음과 같다.

test.log
 -- Frame 1 Framerate: 50.6 [Very Good Framerate]
 -- Frame 2 Framerate: 56.8 [Very Good Framerate]
 -- Frame 3 Framerate: 53.2 [Very Good Framerate]
 -- Frame 4 Framerate: 71.5 [Very Good Framerate]
 -- Frame 5 Framerate: 70.3 [Very Good Framerate]
 -- Frame 6 Framerate: 81.8 [Very Good Framerate]
 -- Frame 7 Framerate: 71.5 [Very Good Framerate]
 -- Frame 8 Framerate: 70.4 [Very Good Framerate]
 -- Frame 9 Framerate: 71.5 [Very Good Framerate]

그래, 네가 원하는 결과와 이것이 다르다.

상세한 프로파일링 결과 출력



아, 괜찮아요, 제대로 된 결과를 출력하는 방법이 있습니다! (오래

사실 또 다른 중요한 속성이 있습니다.
Profiler.enableBinaryLog입니다.

OutputBinaryLogs.cs
private void Awake()
{
    // 詳細ログを有効化
    Profiler.enableBinaryLog = true;
    // ログ出力先を指定
    Profiler.logFile = "test.log";
    // 出力を有効化
    Profiler.enabled = true; 
}

이렇게 하면 Profiler 화면에 출력되는 데이터를 바이너리 데이터로 출력할 수 있습니다.
출력처는 Profiler.logFile로 지정한 출력처에 확장자 「.data」를 붙인 것이 됩니다.

출력 결과는 이런 느낌.


...읽을 수 없다(알았어)

출력 결과를 Profiler 화면에 반영



그런데 이 출력된 내용을 표시하려면 다음과 같이 합니다.

DisplayLogToProfiler.cs
public void IdeyoDoragon()
{
    Profiler.AddFramesFromFile("test.log");
}

그러면 다음과 같이 Profiler에 반영됩니다.


했어요! (오이바카 그만

이제
「그 프로필 결과 받겠어」
"아칸, 프로필 결과 사라졌다"
등이라고 하는 것으로부터 다소는 해방될까. (인적 실수가 없다고는 말하지 않는다)

※덧붙여 실기에서의 동작은 각 사람이 확인해 주세요(ぉぃ

주의사항



첫 번째 코드에서
Profiler.logFile = "";
Profiler.enabled = false;

하고 끈질기게 하고 있었다고 생각합니다만,
이 항목을 true로 설정하면 Unity가 false가 될 때까지 출력 파일을 잠급니다.
그래서 더 이상 필요하지 않으면 false를 설정합시다.

비코우



이런 것도 있는 모양.
UnityEditorInternal.ProfilerDriver

좋은 웹페이지 즐겨찾기