UNPKG

unity-find-fault

Version:

A tool to find fault in unity project.

32 lines 1.59 kB
import fg from "fast-glob"; import fs from "fs-extra"; import path from "path"; import { UnityHelper } from "./UnityHelper.js"; import { strArrayToMap } from "./vendor.js"; import { toolchain } from "../toolchain.js"; export class Missing { async findMissing() { const allGUIDs = await UnityHelper.collectExistingGUID(path.join(toolchain.opts.projectRoot, 'Assets')); const allGUIDs2 = await UnityHelper.collectExistingGUID(path.join(toolchain.opts.projectRoot, 'Library/PackageCache')); const guidMap = strArrayToMap(allGUIDs.concat(allGUIDs2)); const uiRoot = path.join(toolchain.opts.projectRoot, 'Assets'); const prefabs = await fg('**/*.mat', { cwd: uiRoot }); // const prefabs = await fg(['**/*.prefab', '**/*.mat'], { cwd: uiRoot }); for (const prefab of prefabs) { const file = path.join(uiRoot, prefab); const content = await fs.readFile(file, 'utf-8'); const lines = content.split(/\r?\n/); for (let i = 0, len = lines.length; i < len; i++) { const rst = lines[i].match(/guid: (\w{32})/); // 一些内置的比如Mesh Filter之类的guid是0000000000000000e000000000000000 if (rst != null && !rst[1].startsWith('000000000') && !guidMap[rst[1]]) { console.error(file + ':' + (i + 1)); if (file.endsWith('.mat')) { await toolchain.usageFinder.lookUp(file); } } } } } } //# sourceMappingURL=Missing.js.map