Unity3D 가 Preview 에서 로 그 를 인쇄 하 는 방법

Preview 창 은 모델 을 미리 볼 수 있 는 것 외 에 다른 작업 도 할 수 있 습 니 다.
오늘 은 프 리 뷰 창 에 디 버 깅 정 보 를 표시 하 는 작은 도 구 를 쓰 겠 습 니 다.
아래 그림 을 볼 수 있 습 니 다.헬 스 와 파워 를 인쇄 하 는 로그 입 니 다.Preview 에 서 는 콘 솔 에 표시 하 는 것 보다 훨씬 편 합 니 다.
왼쪽 은 Console 에 표시 되 고 오른쪽 은 Preview 창 에 표 시 됩 니 다.

Editor 디 렉 터 리 를 만 들 고 아래 스 크 립 트 를 넣 습 니 다.

using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(Object), true)]
public class PreviewGUIEditor : Editor {
 /** Update every 15th frame. */
 private const int updateOnFrame = 15;

 private GUIStyle _previewLabelStyle;

 private GUIStyle previewLabelStyle {
 get {
  if (_previewLabelStyle == null) {
  _previewLabelStyle = new GUIStyle("PreOverlayLabel") {
   richText = false,
   alignment = TextAnchor.UpperLeft,
   fontStyle = FontStyle.Normal
  };
  // Try to get a fixed-width font on macOS.
  var font = Font.CreateDynamicFontFromOSFont("Monaco", 12);
  // Failing that, try to get a fixed-width font on Windows.
  if (font == null)
   font = Font.CreateDynamicFontFromOSFont("Lucida Console", 12);
  // XXX What fixed-width font should I request if we're on Linux?
  if (font != null)
   _previewLabelStyle.font = font;
  // Debug.Log("Fonts: 
" + string.Join("
", Font.GetOSInstalledFontNames())); } return _previewLabelStyle; } } public override bool HasPreviewGUI() { return Application.isPlaying; } public override bool RequiresConstantRepaint() { // Only repaint on the nth frame. return Application.isPlaying && Time.frameCount % updateOnFrame == 0; } public override void OnPreviewGUI(Rect rect, GUIStyle background) { string str = target.ToString(); GUI.Label(rect, str, previewLabelStyle); } }
인쇄 로그 가 필요 한 클래스 에서 ToString()함 수 를 다시 불 러 오고 preview 에서 출력 해 야 할 내용 을 되 돌려 줍 니 다.
다음은 위 에서 캡 처 한 예제 입 니 다.하나의 Player 클래스 는 ToString()함수 에서 helh 와 power 의 출력 내용 을 되 돌려 줍 니 다.

using UnityEngine;

public class Player : MonoBehaviour
{
 public int health = 10;

 public int power = 10;
 // Use this for initialization
 void Start () {
 
 }
 
 // Update is called once per frame
 void Update ()
 {
 health += 1;
 power += 2;

 Debug.LogError("health = "+ health);
 Debug.LogError("power = "+ power);
 
 }

 public override string ToString()
 {
 return "health = " + health+"
"+ "power = " + power; } }
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기