Unity에서 Profiler 결과 출력
소개
Unity에서 만든 앱의 디버깅 및 성능 검사에 Profiler를 사용하고 있다고 생각합니다.
(다른 기기용으로 이러한 응용 프로그램을 사용할 수도 있다고 생각합니다)
하지만 Unity의 Profiler 이외라면 프로파일링 결과를 출력하여 공유할 수 있죠?
하지만 Unity의 Profiler에는 이러한 빈번한 항목이 보이지 않는다···.
그래서, 출력할 수 없는지를 조사해 보았습니다.
(쓰카, 레퍼런스라든지 보았지만 자세한 것은 쓰지 않았던 생각이 든다)
흔한 방법
스크린 샷 (ェ
구두
UnityEngine.Profiler 사용
아까는 농담이고, 제대로 있습니다.
사용법은 이런 느낌.
OutputProfilerLogs.csusing 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.csprivate void Awake()
{
// 詳細ログを有効化
Profiler.enableBinaryLog = true;
// ログ出力先を指定
Profiler.logFile = "test.log";
// 出力を有効化
Profiler.enabled = true;
}
이렇게 하면 Profiler 화면에 출력되는 데이터를 바이너리 데이터로 출력할 수 있습니다.
출력처는 Profiler.logFile로 지정한 출력처에 확장자 「.data」를 붙인 것이 됩니다.
출력 결과는 이런 느낌.
...읽을 수 없다(알았어)
출력 결과를 Profiler 화면에 반영
그런데 이 출력된 내용을 표시하려면 다음과 같이 합니다.
DisplayLogToProfiler.cspublic void IdeyoDoragon()
{
Profiler.AddFramesFromFile("test.log");
}
그러면 다음과 같이 Profiler에 반영됩니다.
했어요! (오이바카 그만
이제
「그 프로필 결과 받겠어」
"아칸, 프로필 결과 사라졌다"
등이라고 하는 것으로부터 다소는 해방될까. (인적 실수가 없다고는 말하지 않는다)
※덧붙여 실기에서의 동작은 각 사람이 확인해 주세요(ぉぃ
주의사항
첫 번째 코드에서
Profiler.logFile = "";
Profiler.enabled = false;
하고 끈질기게 하고 있었다고 생각합니다만,
이 항목을 true로 설정하면 Unity가 false가 될 때까지 출력 파일을 잠급니다.
그래서 더 이상 필요하지 않으면 false를 설정합시다.
비코우
이런 것도 있는 모양.
UnityEditorInternal.ProfilerDriver
Reference
이 문제에 관하여(Unity에서 Profiler 결과 출력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mebi_nyan/items/ce5ff5b364ce10e0ef71
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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;
}
-- 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]
private void Awake()
{
// 詳細ログを有効化
Profiler.enableBinaryLog = true;
// ログ出力先を指定
Profiler.logFile = "test.log";
// 出力を有効化
Profiler.enabled = true;
}
public void IdeyoDoragon()
{
Profiler.AddFramesFromFile("test.log");
}
Profiler.logFile = "";
Profiler.enabled = false;
UnityEditorInternal.ProfilerDriver
Reference
이 문제에 관하여(Unity에서 Profiler 결과 출력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mebi_nyan/items/ce5ff5b364ce10e0ef71텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)