1
This commit is contained in:
@ -787,9 +787,11 @@ export class GameManager extends Monobehiver {
|
||||
}
|
||||
});
|
||||
} else {
|
||||
|
||||
// 没有提供 modelId,全局查找(保持向后兼容)
|
||||
this.materialDic.Values().forEach(material => {
|
||||
if (material.name === options.target || material.name.startsWith(`${options.target}_`)) {
|
||||
console.log(material.name);
|
||||
targetMaterials.push(material);
|
||||
}
|
||||
});
|
||||
@ -799,7 +801,7 @@ export class GameManager extends Monobehiver {
|
||||
console.warn(`Material not found: ${options.target}${options.modelId ? ` in model ${options.modelId}` : ''}`);
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(options);
|
||||
// 应用材质属性到目标材质
|
||||
targetMaterials.forEach(material => {
|
||||
// 应用颜色
|
||||
@ -818,36 +820,37 @@ export class GameManager extends Monobehiver {
|
||||
}
|
||||
}
|
||||
|
||||
// 应用法线贴图
|
||||
if (options.normalMap !== undefined) {
|
||||
if (options.normalMap) {
|
||||
material.bumpTexture = new Texture(options.normalMap);
|
||||
} else {
|
||||
// 传入空字符串或 null 时清空贴图
|
||||
material.bumpTexture = null;
|
||||
}
|
||||
}
|
||||
// // 应用法线贴图
|
||||
// if (options.normalMap !== undefined) {
|
||||
// if (options.normalMap) {
|
||||
// material.bumpTexture = new Texture(options.normalMap);
|
||||
// } else {
|
||||
// // 传入空字符串或 null 时清空贴图
|
||||
// material.bumpTexture = null;
|
||||
// }
|
||||
// }
|
||||
|
||||
// 应用金属度贴图
|
||||
if (options.metallicTexture !== undefined) {
|
||||
if (options.metallicTexture) {
|
||||
material.metallicTexture = new Texture(options.metallicTexture);
|
||||
} else {
|
||||
// 传入空字符串或 null 时清空贴图
|
||||
material.metallicTexture = null;
|
||||
}
|
||||
}
|
||||
// // 应用金属度贴图
|
||||
// if (options.metallicTexture !== undefined) {
|
||||
// if (options.metallicTexture) {
|
||||
// material.metallicTexture = new Texture(options.metallicTexture);
|
||||
// } else {
|
||||
// // 传入空字符串或 null 时清空贴图
|
||||
// material.metallicTexture = null;
|
||||
// }
|
||||
// }
|
||||
|
||||
// 应用粗糙度值
|
||||
if (options.roughness !== undefined) {
|
||||
material.roughness = options.roughness;
|
||||
}
|
||||
|
||||
// 应用金属度值
|
||||
if (options.metallic !== undefined) {
|
||||
material.metallic = options.metallic;
|
||||
}
|
||||
// if (options.roughness !== undefined) {
|
||||
// material.roughness = options.roughness;
|
||||
// }
|
||||
|
||||
// // 应用金属度值
|
||||
// if (options.metallic !== undefined) {
|
||||
// material.metallic = options.metallic;
|
||||
// }
|
||||
// alert(typeof options.metallic + ' ' + typeof options.roughness);
|
||||
|
||||
// 强制刷新材质
|
||||
material.markDirty();
|
||||
});
|
||||
|
||||
69
src/skuMapping.js
Normal file
69
src/skuMapping.js
Normal file
@ -0,0 +1,69 @@
|
||||
/**
|
||||
* SKU 映射管理模块
|
||||
* 用于维护模型ID与SKU之间的映射关系
|
||||
*/
|
||||
|
||||
// 存储模型ID到SKU的映射
|
||||
const modelIdToSkuMap = new Map();
|
||||
|
||||
/**
|
||||
* 记录模型ID与SKU的映射关系
|
||||
* @param {string} modelId - 模型ID
|
||||
* @param {string} sku - SKU编码
|
||||
*/
|
||||
export const setSkuMapping = (modelId, sku) => {
|
||||
if (!modelId || !sku) {
|
||||
console.warn('modelId 和 sku 不能为空');
|
||||
return;
|
||||
}
|
||||
modelIdToSkuMap.set(modelId, sku);
|
||||
console.log(`已记录映射: ${modelId} -> ${sku}`);
|
||||
};
|
||||
|
||||
/**
|
||||
* 根据模型ID获取关联的SKU
|
||||
* @param {string} modelId - 模型ID
|
||||
* @returns {string|undefined} SKU编码,未找到返回 undefined
|
||||
*/
|
||||
export const getSkuByModelId = (modelId) => {
|
||||
return modelIdToSkuMap.get(modelId);
|
||||
};
|
||||
|
||||
/**
|
||||
* 清除指定模型ID的SKU映射
|
||||
* @param {string} modelId - 模型ID
|
||||
* @returns {boolean} 是否成功删除
|
||||
*/
|
||||
export const clearSkuMapping = (modelId) => {
|
||||
const deleted = modelIdToSkuMap.delete(modelId);
|
||||
if (deleted) {
|
||||
console.log(`已清除映射: ${modelId}`);
|
||||
}
|
||||
return deleted;
|
||||
};
|
||||
|
||||
/**
|
||||
* 清除所有SKU映射
|
||||
*/
|
||||
export const clearAllSkuMappings = () => {
|
||||
const count = modelIdToSkuMap.size;
|
||||
modelIdToSkuMap.clear();
|
||||
console.log(`已清除所有映射,共 ${count} 条`);
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取所有映射关系(用于调试)
|
||||
* @returns {Object} 映射关系对象
|
||||
*/
|
||||
export const getAllMappings = () => {
|
||||
return Object.fromEntries(modelIdToSkuMap);
|
||||
};
|
||||
|
||||
/**
|
||||
* 检查模型ID是否有映射
|
||||
* @param {string} modelId - 模型ID
|
||||
* @returns {boolean} 是否存在映射
|
||||
*/
|
||||
export const hasSkuMapping = (modelId) => {
|
||||
return modelIdToSkuMap.has(modelId);
|
||||
};
|
||||
Reference in New Issue
Block a user