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

ResourcesAPI

UnityEngine 中的类

/

实现于:UnityEngine.CoreModule

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们会阅读用户提出的每一项建议,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议修改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

从该基类派生以提供对特定Resources 方法的 C# 行为的替代实现。

提供的示例将处理较慢的 Resources API 所花费的时间记录到播放器或编辑器日志。

using System;
using System.Diagnostics;
using UnityEngine;
using Object = UnityEngine.Object;
using Debug = UnityEngine.Debug;

public class ResourcesPerformanceLogger : ResourcesAPI { [RuntimeInitializeOnLoadMethod] static void OnRuntimeMethodLoad() { ResourcesAPI.overrideAPI = new ResourcesPerformanceLogger(); }

protected override Object[] FindObjectsOfTypeAll(Type systemTypeInstance) { Stopwatch timer = new Stopwatch(); timer.Start(); Object[] results = base.FindObjectsOfTypeAll(systemTypeInstance); timer.Stop(); Debug.Log($"FindObjectsOfTypeAll({systemTypeInstance}) Time: {timer.Elapsed}"); return results; }

protected override Shader FindShaderByName(string name) { Stopwatch timer = new Stopwatch(); timer.Start(); Shader result = base.FindShaderByName(name); timer.Stop(); Debug.Log($"FindShaderByName({name}) Time: {timer.Elapsed}"); return result; }

protected override Object[] LoadAll(string path, Type systemTypeInstance) { Stopwatch timer = new Stopwatch(); timer.Start(); Object[] results = base.LoadAll(path, systemTypeInstance); timer.Stop(); Debug.Log($"LoadAll({path}, {systemTypeInstance}) Time: {timer.Elapsed}"); return results; } }

静态属性

overrideAPI用于处理覆盖的 Resources 方法的特定 ResourcesAPI 实例。

受保护的方法

FindObjectsOfTypeAll用于自定义 Resources.FindObjectsOfTypeAll 函数行为的覆盖。
FindShaderByName用于自定义 Shader.Find 函数行为的覆盖。
Load用于自定义 Resources.Load 函数行为的覆盖。
LoadAll用于自定义 Resources.LoadAll 函数行为的覆盖。
LoadAsync用于自定义 Resources.LoadAsync 函数行为的覆盖。
UnloadAsset用于自定义 Resources.Unload 函数行为的覆盖。