加载管理器插件。
此插件为所有资源加载器提供一个统一的入口,方便进行加载资源的内存管理和时间周期管理。
LoaderManagerPlugin
:::tip
可以使用枚举:LOADER_MANAGER_PLUGIN
:::
无
export interface LoaderManagerParameters {
/**加载器拓展 */
loaderExtends: { [key: string]: Loader };
}
export interface LoaderManagerPluginParameters extends LoaderManagerParameters {
/**公共前缀路径 */
path?: string;
}
支持拓展不同格式的加载资源类型和覆盖当前的加载器。
import { Loader } from "three";
class MyGLFTLoader extends Loader {}
engine.install(
LoaderManagerPlugin({
loaderExtends: {
pmx: new PMXLoader(),
glft: new MyGLTFLoader(),
},
})
);
:::tip
自定义的加载器建议继承three.js
的Loader
。
:::
统一的资源前缀,这个对于有不同域名的服务地址会很有用。
engine.install(
LoaderManagerPlugin({
path: "https://www.mywebsite.com/model",
})
);
engine.loadResources(["/home/desk.fbx"]);
// /home/desk.fbx -> https://www.mywebsite.com/model/home/desk.fbx
export interface LoaderManagerEngine extends Engine {
/**资源加载器管理器 */
loaderManager: LoaderManager;
/**加载资源函数 */
loadResources: (
urlList: Array<LoadUnit>,
callback: (err: Error | undefined, event?: LoadedEvent) => void
) => LoaderManagerEngine;
/**异步加载资源函数 */
loadResourcesAsync: (urlList: Array<LoadUnit>) => Promise<LoadedEvent>;
}
可以通过指定当前资源的类型进行。
engine.loadResources([
{
url: "blob:https://shiotsukikaedesari.gitee.io/1e09dae0-94a2-4a32-bd9f-eeae8df51907",
ext: "glft",
},
]);
此类继承@vis-three/core
的Dispatcher
export enum LOADER_EVENT {
BEFORELOAD = "beforeLoad",
LOADING = "loading",
DETAILLOADING = "detailLoading",
DETAILLOADED = "detailLoaded",
LOADED = "loaded",
}
export interface LoadDetail {
url: string;
progress: number;
error: boolean;
message: string;
}
export interface BeforeLoadEvent extends BaseEvent {
urlList: string[];
}
export interface LoadingEvent extends BaseEvent {
loadTotal: number;
loadSuccess: number;
loadError: number;
}
export interface DetailEvent extends BaseEvent {
detail: LoadDetail;
}
export interface LoadedEvent extends BaseEvent {
loadTotal: number;
loadSuccess: number;
loadError: number;
resourceMap: Map<string, unknown>;
}
▸ getLoader(ext
): null
| Loader
获取加载器
Name | Type | Description |
---|---|---|
ext |
string |
资源类型 |
null
| Loader
▸ getResource(url
): unknown
获取 url 下的资源
Name | Type |
---|---|
url |
string |
unknown
▸ load(urlList
): LoaderManager
加载资源
Name | Type | Description |
---|---|---|
urlList |
LoadUnit [] |
string[] | [{ext: string, url: string}] |
this
▸ register(ext
, loader
): LoaderManager
注册 loader
Name | Type | Description |
---|---|---|
ext |
string |
文件格式: jpg |
loader |
Loader |
extend THREE.Loader |
this
▸ reset(): LoaderManager
重置加载管理器属性
this
▸ setLoadDetailMap(map
): LoaderManager
Deprecated
设置详细资源信息
Name | Type |
---|---|
map |
Object |
this
▸ setPath(path
): LoaderManager
设置统一资源路径前缀
Name | Type |
---|---|
path |
string |
this
▸ setRequestHeader(headers
): LoaderManager
设置请求头
Name | Type |
---|---|
headers |
Record <string , string > |
this
▸ setResponseType(responseType
): LoaderManager
设置响应类型
Name | Type |
---|---|
responseType |
string |
this
▸ toJSON(): string
string