Răsfoiți Sursa

feat:优化细节

zouwuqiang 1 an în urmă
părinte
comite
0c9e5ca190

+ 7 - 7
assets/bundle/gui/game/game.prefab

@@ -600,7 +600,7 @@
     "_lpos": {
       "__type__": "cc.Vec3",
       "x": 312.314,
-      "y": 552.8,
+      "y": 534.8,
       "z": 0
     },
     "_lrot": {
@@ -640,7 +640,7 @@
     },
     "_contentSize": {
       "__type__": "cc.Size",
-      "width": 104.078125,
+      "width": 129.09765625,
       "height": 54.4
     },
     "_anchorPoint": {
@@ -679,8 +679,8 @@
     "_string": "人数:{{0}}",
     "_horizontalAlign": 2,
     "_verticalAlign": 0,
-    "_actualFontSize": 24,
-    "_fontSize": 24,
+    "_actualFontSize": 30,
+    "_fontSize": 30,
     "_fontFamily": "Arial",
     "_lineHeight": 40,
     "_overflow": 0,
@@ -765,7 +765,7 @@
     "_target": null,
     "_left": 0,
     "_right": 47.68599999999998,
-    "_top": 60,
+    "_top": 78,
     "_bottom": 0,
     "_horizontalCenter": 0,
     "_verticalCenter": 0,
@@ -2301,7 +2301,7 @@
     "_lpos": {
       "__type__": "cc.Vec3",
       "x": 10.4,
-      "y": 558.921,
+      "y": 528,
       "z": 0
     },
     "_lrot": {
@@ -3388,7 +3388,7 @@
     "_target": null,
     "_left": 196.04500000000002,
     "_right": 0,
-    "_top": 31.07899999999995,
+    "_top": 62,
     "_bottom": 0,
     "_horizontalCenter": 10.4,
     "_verticalCenter": 0,

BIN
assets/internal/default_skybox/default_skybox_reflection.png


+ 0 - 134
assets/internal/default_skybox/default_skybox_reflection.png.meta

@@ -1,134 +0,0 @@
-{
-  "ver": "1.0.26",
-  "importer": "image",
-  "imported": true,
-  "uuid": "d9ae5174-faff-4586-b543-09e8635e0477",
-  "files": [
-    ".json",
-    ".png"
-  ],
-  "subMetas": {
-    "b47c0": {
-      "importer": "erp-texture-cube",
-      "uuid": "d9ae5174-faff-4586-b543-09e8635e0477@b47c0",
-      "displayName": "default_skybox_reflection",
-      "id": "b47c0",
-      "name": "textureCube",
-      "userData": {
-        "wrapModeS": "repeat",
-        "wrapModeT": "repeat",
-        "minfilter": "linear",
-        "magfilter": "linear",
-        "mipfilter": "linear",
-        "anisotropy": 0,
-        "isRGBE": true,
-        "imageDatabaseUri": "d9ae5174-faff-4586-b543-09e8635e0477",
-        "mipBakeMode": 2
-      },
-      "ver": "1.0.10",
-      "imported": true,
-      "files": [
-        ".json"
-      ],
-      "subMetas": {
-        "74afd": {
-          "importer": "texture-cube-face",
-          "uuid": "d9ae5174-faff-4586-b543-09e8635e0477@b47c0@74afd",
-          "displayName": "",
-          "id": "74afd",
-          "name": "right",
-          "userData": {},
-          "ver": "1.0.0",
-          "imported": true,
-          "files": [
-            ".json",
-            ".png"
-          ],
-          "subMetas": {}
-        },
-        "8fd34": {
-          "importer": "texture-cube-face",
-          "uuid": "d9ae5174-faff-4586-b543-09e8635e0477@b47c0@8fd34",
-          "displayName": "",
-          "id": "8fd34",
-          "name": "left",
-          "userData": {},
-          "ver": "1.0.0",
-          "imported": true,
-          "files": [
-            ".json",
-            ".png"
-          ],
-          "subMetas": {}
-        },
-        "bb97f": {
-          "importer": "texture-cube-face",
-          "uuid": "d9ae5174-faff-4586-b543-09e8635e0477@b47c0@bb97f",
-          "displayName": "",
-          "id": "bb97f",
-          "name": "top",
-          "userData": {},
-          "ver": "1.0.0",
-          "imported": true,
-          "files": [
-            ".json",
-            ".png"
-          ],
-          "subMetas": {}
-        },
-        "7d38f": {
-          "importer": "texture-cube-face",
-          "uuid": "d9ae5174-faff-4586-b543-09e8635e0477@b47c0@7d38f",
-          "displayName": "",
-          "id": "7d38f",
-          "name": "bottom",
-          "userData": {},
-          "ver": "1.0.0",
-          "imported": true,
-          "files": [
-            ".json",
-            ".png"
-          ],
-          "subMetas": {}
-        },
-        "e9a6d": {
-          "importer": "texture-cube-face",
-          "uuid": "d9ae5174-faff-4586-b543-09e8635e0477@b47c0@e9a6d",
-          "displayName": "",
-          "id": "e9a6d",
-          "name": "front",
-          "userData": {},
-          "ver": "1.0.0",
-          "imported": true,
-          "files": [
-            ".json",
-            ".png"
-          ],
-          "subMetas": {}
-        },
-        "40c10": {
-          "importer": "texture-cube-face",
-          "uuid": "d9ae5174-faff-4586-b543-09e8635e0477@b47c0@40c10",
-          "displayName": "",
-          "id": "40c10",
-          "name": "back",
-          "userData": {},
-          "ver": "1.0.0",
-          "imported": true,
-          "files": [
-            ".json",
-            ".png"
-          ],
-          "subMetas": {}
-        }
-      }
-    }
-  },
-  "userData": {
-    "type": "texture cube",
-    "isRGBE": true,
-    "hasAlpha": true,
-    "fixAlphaTransparencyArtifacts": false,
-    "redirect": "d9ae5174-faff-4586-b543-09e8635e0477@b47c0"
-  }
-}

+ 11 - 20
assets/main.scene

@@ -177,15 +177,15 @@
     "_lpos": {
       "__type__": "cc.Vec3",
       "x": -0.15,
-      "y": 9.216,
-      "z": 10.64
+      "y": 11.116,
+      "z": 10.34
     },
     "_lrot": {
       "__type__": "cc.Quat",
-      "x": -0.43680178836770217,
+      "x": -0.4687008669912817,
       "y": 0,
       "z": 0,
-      "w": 0.8995577789551803
+      "w": 0.8833569478311816
     },
     "_lscale": {
       "__type__": "cc.Vec3",
@@ -197,7 +197,7 @@
     "_layer": 1073741824,
     "_euler": {
       "__type__": "cc.Vec3",
-      "x": -51.8,
+      "x": -55.9,
       "y": 0,
       "z": 0
     },
@@ -222,9 +222,9 @@
     "_far": 1000,
     "_color": {
       "__type__": "cc.Color",
-      "r": 0,
-      "g": 0,
-      "b": 0,
+      "r": 142,
+      "g": 148,
+      "b": 198,
       "a": 255
     },
     "_depth": 1,
@@ -708,24 +708,15 @@
   {
     "__type__": "cc.SkyboxInfo",
     "_envLightingType": 0,
-    "_envmapHDR": {
-      "__uuid__": "d032ac98-05e1-4090-88bb-eb640dcb5fc1@b47c0",
-      "__expectedType__": "cc.TextureCube"
-    },
-    "_envmap": {
-      "__uuid__": "d032ac98-05e1-4090-88bb-eb640dcb5fc1@b47c0",
-      "__expectedType__": "cc.TextureCube"
-    },
+    "_envmapHDR": null,
+    "_envmap": null,
     "_envmapLDR": null,
     "_diffuseMapHDR": null,
     "_diffuseMapLDR": null,
     "_enabled": false,
     "_useHDR": true,
     "_editableMaterial": null,
-    "_reflectionHDR": {
-      "__uuid__": "d9ae5174-faff-4586-b543-09e8635e0477@b47c0",
-      "__expectedType__": "cc.TextureCube"
-    },
+    "_reflectionHDR": null,
     "_reflectionLDR": null,
     "_rotationAngle": 0
   },

+ 1 - 1
assets/script/game/checkpoint/view/CheckpointMainViewComp.ts

@@ -96,7 +96,7 @@ export class CheckpointMainViewComp extends CCComp {
                 oops.gui.open(UIID.ClearCell);
                 break;
             case "btn_add_cell":
-                if (checkpoint.CheckpointModelBase.vm.clearCount >= 3) {
+                if (checkpoint.CheckpointModelBase.vm.addCellCount >= 3) {
                     oops.gui.toast('该关卡使用次数已满')
                     return
                 }

+ 2 - 2
assets/script/game/checkpoint/view/CheckpointViewController.ts

@@ -34,8 +34,8 @@ export class CheckpointViewController extends Component {
         if (PhysicsSystem.instance.raycast(this._ray)) {
             const r = PhysicsSystem.instance.raycastResults;
             for (let index = 0; index < r.length; index++) {
-                const element = r[0];
-                console.log(this.node?.uuid)
+                const element = r[index];
+                // console.log(this.node?.uuid)
                 const view = element.collider.node?.getComponent(PuppetViewComp) as PuppetViewComp
                 if (view) {
                     view.controller.onPuppetClick()

+ 75 - 0
assets/script/game/common/utils/MaterialPool.ts

@@ -0,0 +1,75 @@
+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;
+        }
+    }
+}

+ 9 - 0
assets/script/game/common/utils/MaterialPool.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.23",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "727cc9ee-26c9-42bd-8216-6a33c5737188",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 8 - 0
assets/script/game/common/utils/color.ts

@@ -95,4 +95,12 @@ export const hsvToRgb = (h, s, v) => {
     }
 
     return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
+}
+
+export const colorToHexString = (color)=>{
+    let hexR = color.r.toString(16).padStart(2, '0');
+    let hexG = color.g.toString(16).padStart(2, '0');
+    let hexB = color.b.toString(16).padStart(2, '0');
+    let hexA = color.a.toString(16).padStart(2, '0');
+    return `#${hexR}${hexG}${hexB}${hexA}`;
 }

+ 2 - 2
assets/script/game/initialize/Initialize.ts

@@ -21,9 +21,9 @@ export class Initialize extends ecs.Entity {
 
     protected init() {
         // 帐号模块为初始化模块的子实体对象
-        console.log('11111111111111')
+        // console.log('11111111111111')
         this.account = ecs.getEntity<Account>(Account);
-        console.log(this.account)
+        // console.log(this.account)
         this.addChild(this.account);
 
         // 初始化游戏公共资源

+ 17 - 10
assets/script/game/puppet/view/PuppetViewComp.ts

@@ -4,7 +4,8 @@ import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs
 import { PuppetViewController } from "./PuppetViewController";
 import { Puppet } from "../puppet";
 import { PuppetViewAnimator } from "./PuppetViewAnimator";
-import { adjustColor, adjustColor1 } from "../../common/utils/color";
+import { adjustColor, adjustColor1, colorToHexString } from "../../common/utils/color";
+import { MaterialPool } from "../../common/utils/MaterialPool";
 
 const { ccclass, property } = _decorator;
 
@@ -44,14 +45,20 @@ export class PuppetViewComp extends CCComp {
     }
 
     switchOutLine(on: boolean) {
+        const puppet = this.ent as Puppet;
+        if(!puppet?.PuppetModel)return
         // 获取MeshRenderer组件
         let rendererComponets = this.node.getComponentsInChildren(MeshRenderer) as RenderableComponent[]
         rendererComponets.forEach((rendererComponet) => {
              // 获取材质实例
-             let materialIns = rendererComponet.material
-             if (materialIns) {
-                 materialIns.setProperty('lineWidth', on ? 20 : 5);
-                 rendererComponet.material = materialIns
+             let material = rendererComponet.sharedMaterial
+             if (material) {
+                const lineWidth = material.getProperty('lineWidth')
+                if(on&&lineWidth===20)return
+                if(!on&&lineWidth==5)return
+                // const color = material.getProperty('mainColor')
+                // if(!color)return
+                 rendererComponet.material = MaterialPool.getManMaterialWithColorLineBold(puppet.PuppetModel.color)
              }
         })
        
@@ -63,13 +70,13 @@ export class PuppetViewComp extends CCComp {
         let rendererComponets = this.node.getComponentsInChildren(MeshRenderer) as RenderableComponent[]
         rendererComponets.forEach((rendererComponet) => {
             // 获取材质实例
-            let materialIns = rendererComponet.material
+            let materialIns = MaterialPool.getManMaterialWithColor(color)
             if (materialIns) {
                 // 修改材质实例的颜色
-                const newColor = adjustColor(color,1,1.1)
-                materialIns.setProperty('mainColor', new Color(newColor));
-                materialIns.setProperty('shadeColor1', new Color(newColor));
-                materialIns.setProperty('shadeColor2', new Color(adjustColor(color,0.78,1.5)));
+                // const newColor = adjustColor(color,1,1.1)
+                // materialIns.setProperty('mainColor', new Color(newColor));
+                // materialIns.setProperty('shadeColor1', new Color(newColor));
+                // materialIns.setProperty('shadeColor2', new Color(adjustColor(color,0.78,1.5)));
                 rendererComponet.material = materialIns
             }
         })

+ 14 - 14
assets/script/game/vehicle/view/VehicleViewComp.ts

@@ -41,20 +41,20 @@ export class VehicleViewComp extends CCComp {
         this.controller.vehicle = vehicle;
     }
 
-    switchOutLine(on: boolean) {
-        // 获取MeshRenderer组件
-        let rendererComponet = this.node.getComponentInChildren(MeshRenderer) as RenderableComponent
-
-        if (rendererComponet) {
-            // 获取材质实例
-            let materialIns = rendererComponet.material
-            console.log(materialIns)
-            if (materialIns) {
-                materialIns.passes[0].defines['USE_OUTLINE_PASS'] = on
-                rendererComponet.material = materialIns
-            }
-        }
-    }
+    // switchOutLine(on: boolean) {
+    //     // 获取MeshRenderer组件
+    //     let rendererComponet = this.node.getComponentInChildren(MeshRenderer) as RenderableComponent
+
+    //     if (rendererComponet) {
+    //         // 获取材质实例
+    //         let materialIns = rendererComponet.material
+    //         console.log(materialIns)
+    //         if (materialIns) {
+    //             materialIns.passes[0].defines['USE_OUTLINE_PASS'] = on
+    //             rendererComponet.material = materialIns
+    //         }
+    //     }
+    // }
 
     changeColor(color: string) {
         // 获取MeshRenderer组件

+ 6 - 1
assets/script/platform/ad/AdManager.ts

@@ -1,4 +1,5 @@
 import { sys } from "cc";
+import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops";
 
 // AdManager.ts
 export class AdManager {
@@ -42,11 +43,12 @@ export class AdManager {
         if (this.rewardVideoAd) {
             this.rewardVideoAd.show().then(() => {
                 console.log('Rewarded video ad displayed!');
-                successCallback && successCallback();
+                // successCallback && successCallback();
             }).catch(err => {
                 console.error('Failed to display rewarded video ad:', err);
                 this.rewardVideoAd.load().then(() => this.rewardVideoAd.show());
                 failCallback && failCallback(err);
+                oops.audio.resumeAll()
             });
 
             // 监听广告关闭事件
@@ -55,15 +57,18 @@ export class AdManager {
                 if (res && res.isEnded) {
                     console.log('Rewarded video ad watched till the end');
                     successCallback && successCallback();
+                    oops.audio.resumeAll()
                 } else {
                     // 用户提前关闭广告
                     console.log('Rewarded video ad was closed before completion');
                     failCallback && failCallback(new Error('Ad was closed before completion'));
+                    oops.audio.resumeAll()
                 }
             });
         } else {
             console.error('Reward video ad is not initialized.');
             failCallback && failCallback(new Error('Reward video ad is not initialized'));
+            oops.audio.resumeAll()
         }
     }
 }