UNPKG

@eva/react-eva

Version:

React EVA是一个让开发同学能够在React技术体系下,利用EVA JS的游戏研发能力,开发动画、游戏类场景的框架。它可以让开发同学用熟悉的JSX和Hooks语法编写动画、游戏场景的代码。

41 lines (34 loc) 987 B
import {useMemo} from 'react'; import {resource} from '@eva/eva.js'; let resourceCount = 0; const resourceNameMap = {}; export default function useResource({name, type, src, preload}) { const urls = Object.keys(src).sort().map(key => { if (typeof src[key] === 'string') { return src[key]; } else { return src[key].url || src[key].src; } }); return useMemo(() => { const mapKey = urls.join('|'); const resourceCacheName = resourceNameMap[mapKey]; let resourceName; if ( resourceCacheName !== undefined && (name === undefined || name === resourceCacheName)) { resourceName = resourceCacheName; } else { resourceName = name || `resource_${type}_${++resourceCount}`; resourceNameMap[mapKey] = resourceName; resource.addResource([ { name: resourceName, type, src, preload: preload ?? true, }, ]); } return resourceName; }, urls); }