版本:Unity 6 (6000.0)
语言英语
  • C#

ProfilerModuleViewController.CreateView

建议更改

成功!

感谢您帮助我们改进 Unity 文档的质量。虽然我们无法接受所有提交,但也确实会阅读用户建议的每个更改,并在合适的情况下进行更新。

关闭

提交失败

出于某种原因,您建议的更改无法提交。请在几分钟后 <a>重试</a>。同时感谢您花时间帮助我们改进 Unity 文档的质量。

关闭

取消

声明

受保护的 UIElements.VisualElement CreateView();

返回

VisualElement 返回视图控制器的视图。VisualElement

描述

创建视图控制器的视图。当 Unity 即将首次显示视图控制器的视图时,会自动调用该方法。

您必须重写该方法才能构建视图控制器的视图层级。为此,请从 UXML 文件 加载可视化树,或者按照示例代码所示直接在 C# 中构建视图。

using Unity.Profiling.Editor;
using UnityEditor;
using UnityEngine.UIElements;

public class SingleCounterViewController : ProfilerModuleViewController { ProfilerCounterDescriptor m_Counter; Label m_CounterLabel;

public SingleCounterViewController(ProfilerWindow profilerWindow, ProfilerCounterDescriptor counter) : base(profilerWindow) { m_Counter = counter; }

protected override VisualElement CreateView() { // Create a simple view with a single label. var view = new VisualElement(); m_CounterLabel = new Label(); view.Add(m_CounterLabel);

// Subscribe to Profiler window SelectedFrameIndexChanged event. ProfilerWindow.SelectedFrameIndexChanged += OnSelectedFrameIndexChanged;

// Populate label with counter value in selected frame. ReloadData();

return view; }

protected override void Dispose(bool disposing) { if (!disposing) return;

// Unsubscribe from Profiler window SelectedFrameIndexChanged event. ProfilerWindow.SelectedFrameIndexChanged -= OnSelectedFrameIndexChanged;

base.Dispose(disposing); }

void OnSelectedFrameIndexChanged(long selectedFrame) { // Update label with counter value in selected frame. ReloadData(); }

void ReloadData() { // Update label text with formatted counter value in selected frame. var selectedFrameIndexInt32 = System.Convert.ToInt32(ProfilerWindow.selectedFrameIndex); var formattedCounterValue = UnityEditorInternal.ProfilerDriver.GetFormattedCounterValue(selectedFrameIndexInt32, m_Counter.CategoryName, m_Counter.Name); m_CounterLabel.text = $"{m_Counter}: {formattedCounterValue}"; } }