| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import { _decorator, Component, Material, Color, EffectAsset } from 'cc';
- import { adjustColor } from './color';
- const { ccclass, property } = _decorator;
- @ccclass('MaterialPool')
- export class MaterialPool extends Component {
- static materialMap = new Map<string, Material>();
- static materialBoldMap = new Map<string, Material>();
- static getManMaterialWithColor(color: string): Material {
- // 将颜色转换为字符串作为键值
- const colorKey = color.toUpperCase();
-
- // 检查材质池中是否已有该颜色的材质
- if (this.materialMap.has(colorKey)) {
- return this.materialMap.get(colorKey);
- } else {
- // 如果没有,创建一个新的材质并设置其颜色
- let newMaterial = new Material();
- newMaterial.initialize({
- effectName: 'builtin-toon', // 可以根据需要选择不同的effect
- defines: {
- USE_OUTLINE_PASS: true,
- USE_INSTANCING: true
- }
- });
- newMaterial.setProperty('lineWidth', 5); // 设置线宽度为 5
- const newColor = adjustColor(color,1,1.1)
- newMaterial.setProperty('mainColor', new Color(newColor));
- newMaterial.setProperty('shadeColor1', new Color(newColor));
- newMaterial.setProperty('shadeColor2', new Color(adjustColor(color,0.78,1.5)));
- newMaterial.setProperty('baseStep', 0.9);
- newMaterial.setProperty('baseFeather', 0);
- newMaterial.setProperty('shadeStep', 0.6);
- newMaterial.setProperty('shadeFeather', 0.2);
- // 将新创建的材质保存到材质池
- this.materialMap.set(colorKey, newMaterial);
- return newMaterial;
- }
- }
- static getManMaterialWithColorLineBold(color: string): Material {
- // 将颜色转换为字符串作为键值
- const colorKey = color.toUpperCase();
-
- // 检查材质池中是否已有该颜色的材质
- if (this.materialBoldMap.has(colorKey)) {
- return this.materialBoldMap.get(colorKey);
- } else {
- // 如果没有,创建一个新的材质并设置其颜色
- let newMaterial = new Material();
- newMaterial.initialize({
- effectName: 'builtin-toon', // 可以根据需要选择不同的effect
- defines: {
- USE_OUTLINE_PASS: true,
- USE_INSTANCING: true
- }
- });
- newMaterial.setProperty('lineWidth', 20);
- const newColor = adjustColor(color,1,1.1)
- newMaterial.setProperty('mainColor', new Color(newColor));
- newMaterial.setProperty('shadeColor1', new Color(newColor));
- newMaterial.setProperty('shadeColor2', new Color(adjustColor(color,0.78,1.5)));
- newMaterial.setProperty('baseStep', 0.9);
- newMaterial.setProperty('baseFeather', 0);
- newMaterial.setProperty('shadeStep', 0.6);
- newMaterial.setProperty('shadeFeather', 0.2);
- // 将新创建的材质保存到材质池
- this.materialBoldMap.set(colorKey, newMaterial);
- return newMaterial;
- }
- }
- }
|