Kaynağa Gözat

第一步实现

181404010226 2 ay önce
ebeveyn
işleme
d43b4f3b38
32 değiştirilmiş dosya ile 307 ekleme ve 1766 silme
  1. 0 9
      assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/examples.meta
  2. 0 700
      assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/examples/AdvancedExample.ts
  3. 0 9
      assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/examples/AdvancedExample.ts.meta
  4. 0 401
      assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/examples/BasicExample.ts
  5. 0 9
      assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources.meta
  6. 0 9
      assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources/spine.meta
  7. 0 19
      assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources/spine/tut_hand.atlas
  8. 0 11
      assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources/spine/tut_hand.atlas.meta
  9. 0 118
      assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources/spine/tut_hand.json
  10. 0 13
      assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources/spine/tut_hand.json.meta
  11. BIN
      assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources/spine/tut_hand.png
  12. 0 134
      assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources/spine/tut_hand.png.meta
  13. BIN
      assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources/spine/tut_hand.skel
  14. 0 14
      assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources/spine/tut_hand.skel.meta
  15. 0 9
      assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources/textures.meta
  16. 0 4
      assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/scripts/GuideSteps.ts
  17. 9 107
      assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/scripts/GuideUIController.ts
  18. 98 0
      assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/scripts/RoundRectMask.ts
  19. 1 1
      assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/scripts/RoundRectMask.ts.meta
  20. 1 1
      assets/NewbieGuidePlugin-v1.0.0/hand/skeleton.json
  21. 192 102
      assets/Scenes/GameLevel.scene
  22. 1 1
      assets/data/backups.meta
  23. 0 9
      assets/data/excel/installer_package.meta
  24. 0 17
      assets/data/excel/installer_package/requirements.txt
  25. 0 11
      assets/data/excel/installer_package/requirements.txt.meta
  26. 0 29
      assets/data/excel/installer_package/一键安装依赖.bat
  27. 0 12
      assets/data/excel/installer_package/一键安装依赖.bat.meta
  28. BIN
      assets/data/excel/installer_package/游戏配置工具依赖安装器.exe
  29. 0 12
      assets/data/excel/installer_package/游戏配置工具依赖安装器.exe.meta
  30. 1 1
      assets/resources/data/backups/levels.meta
  31. 3 3
      assets/scripts/CombatSystem/BlockManager.ts
  32. 1 1
      assets/scripts/Guide.meta

+ 0 - 9
assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/examples.meta

@@ -1,9 +0,0 @@
-{
-  "ver": "1.2.0",
-  "importer": "directory",
-  "imported": true,
-  "uuid": "d50b7cb2-5471-4689-bc11-316ca3996204",
-  "files": [],
-  "subMetas": {},
-  "userData": {}
-}

+ 0 - 700
assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/examples/AdvancedExample.ts

@@ -1,700 +0,0 @@
-/**
- * 新手引导插件高级使用示例
- * 演示自定义引导步骤、复杂条件判断和动态引导流程
- */
-
-import { GuideManager } from "../scripts/GuideManager";
-import { GuideStep } from "../scripts/GuideStep";
-import { ClickGuideStep, DragGuideStep, DialogGuideStep, WaitConditionGuideStep } from "../scripts/GuideSteps";
-
-const { ccclass, property } = cc._decorator;
-
-/**
- * 自定义引导步骤:商店购买引导
- */
-class ShopBuyGuideStep extends GuideStep {
-    private shopItemId: string;
-    private requiredCoins: number;
-    
-    constructor(stepId: string, shopItemId: string, requiredCoins: number) {
-        super(stepId);
-        this.shopItemId = shopItemId;
-        this.requiredCoins = requiredCoins;
-    }
-    
-    canTrigger(): boolean {
-        // 检查玩家是否有足够金币
-        const gameData = this.getGameData();
-        return gameData.coins >= this.requiredCoins;
-    }
-    
-    execute(): void {
-        console.log(`开始商店购买引导: ${this.shopItemId}`);
-        
-        // 高亮商店按钮
-        const shopButton = cc.find("Canvas/UI/ShopButton");
-        if (shopButton) {
-            this.highlightNode(shopButton);
-        }
-        
-        // 显示购买提示
-        this.showBuyTip();
-        
-        // 监听购买事件
-        cc.systemEvent.on("item_purchased", this.onItemPurchased, this);
-    }
-    
-    private showBuyTip(): void {
-        const tipText = `使用 ${this.requiredCoins} 金币购买 ${this.shopItemId}`;
-        // 这里可以显示自定义的提示UI
-        console.log(tipText);
-    }
-    
-    private onItemPurchased(itemId: string): void {
-        if (itemId === this.shopItemId) {
-            this.complete();
-        }
-    }
-    
-    onComplete(): void {
-        // 清理事件监听
-        cc.systemEvent.off("item_purchased", this.onItemPurchased, this);
-        
-        // 移除高亮
-        const shopButton = cc.find("Canvas/UI/ShopButton");
-        if (shopButton) {
-            this.removeHighlight(shopButton);
-        }
-        
-        console.log(`商店购买引导完成: ${this.shopItemId}`);
-    }
-    
-    private getGameData(): any {
-        // 获取游戏数据的示例方法
-        return {
-            coins: 1000, // 示例数据
-            level: 5
-        };
-    }
-    
-    private highlightNode(node: cc.Node): void {
-        // 添加高亮效果的示例实现
-        const highlight = new cc.Node("Highlight");
-        const graphics = highlight.addComponent(cc.Graphics);
-        
-        graphics.strokeColor = cc.Color.YELLOW;
-        graphics.lineWidth = 3;
-        graphics.rect(-node.width/2, -node.height/2, node.width, node.height);
-        graphics.stroke();
-        
-        node.addChild(highlight);
-    }
-    
-    private removeHighlight(node: cc.Node): void {
-        const highlight = node.getChildByName("Highlight");
-        if (highlight) {
-            highlight.removeFromParent();
-        }
-    }
-}
-
-/**
- * 自定义引导步骤:多选择引导
- */
-class MultiChoiceGuideStep extends GuideStep {
-    private choices: Array<{id: string, text: string, target: string}>;
-    private selectedChoice: string = null;
-    
-    constructor(stepId: string, choices: Array<{id: string, text: string, target: string}>) {
-        super(stepId);
-        this.choices = choices;
-    }
-    
-    canTrigger(): boolean {
-        // 检查所有选择目标是否都存在
-        return this.choices.every(choice => cc.find(choice.target) !== null);
-    }
-    
-    execute(): void {
-        console.log("开始多选择引导");
-        
-        // 显示选择UI
-        this.showChoiceUI();
-        
-        // 高亮所有选择项
-        this.choices.forEach(choice => {
-            const target = cc.find(choice.target);
-            if (target) {
-                this.addChoiceListener(target, choice.id);
-                this.highlightChoice(target);
-            }
-        });
-    }
-    
-    private showChoiceUI(): void {
-        // 创建选择提示UI
-        const choiceUI = new cc.Node("ChoiceUI");
-        const label = choiceUI.addComponent(cc.Label);
-        label.string = "请选择一个操作:";
-        label.fontSize = 24;
-        
-        // 添加到场景中
-        const canvas = cc.find("Canvas");
-        if (canvas) {
-            canvas.addChild(choiceUI);
-            choiceUI.setPosition(0, 200);
-        }
-    }
-    
-    private addChoiceListener(target: cc.Node, choiceId: string): void {
-        const listener = () => {
-            this.selectedChoice = choiceId;
-            this.complete();
-        };
-        
-        target.on(cc.Node.EventType.TOUCH_END, listener);
-        
-        // 保存监听器引用以便后续清理
-        target['_guideListener'] = listener;
-    }
-    
-    private highlightChoice(target: cc.Node): void {
-        // 添加选择高亮效果
-        const pulse = cc.tween(target)
-            .to(0.5, { scale: 1.1 })
-            .to(0.5, { scale: 1.0 })
-            .union()
-            .repeatForever();
-        
-        pulse.start();
-        target['_guideTween'] = pulse;
-    }
-    
-    onComplete(): void {
-        console.log(`多选择引导完成,选择了: ${this.selectedChoice}`);
-        
-        // 清理所有监听器和动画
-        this.choices.forEach(choice => {
-            const target = cc.find(choice.target);
-            if (target) {
-                // 移除监听器
-                if (target['_guideListener']) {
-                    target.off(cc.Node.EventType.TOUCH_END, target['_guideListener']);
-                    delete target['_guideListener'];
-                }
-                
-                // 停止动画
-                if (target['_guideTween']) {
-                    target['_guideTween'].stop();
-                    delete target['_guideTween'];
-                    target.scale = 1.0;
-                }
-            }
-        });
-        
-        // 移除选择UI
-        const choiceUI = cc.find("Canvas/ChoiceUI");
-        if (choiceUI) {
-            choiceUI.removeFromParent();
-        }
-        
-        // 保存选择结果
-        this.setStepData("selectedChoice", this.selectedChoice);
-    }
-}
-
-@ccclass
-export default class AdvancedExample extends cc.Component {
-    
-    @property(cc.Node)
-    shopButton: cc.Node = null;
-    
-    @property(cc.Node)
-    upgradeButton: cc.Node = null;
-    
-    @property(cc.Node)
-    settingsButton: cc.Node = null;
-    
-    @property(cc.Label)
-    coinsLabel: cc.Label = null;
-    
-    private _guideManager: GuideManager;
-    private _gameData = {
-        coins: 500,
-        level: 1,
-        hasShopItem: false,
-        tutorialCompleted: false
-    };
-    
-    onLoad() {
-        this.initAdvancedGuideSystem();
-        this.setupGameLogic();
-    }
-    
-    start() {
-        // 根据游戏状态决定引导流程
-        this.startConditionalGuide();
-    }
-    
-    /**
-     * 初始化高级引导系统
-     */
-    private initAdvancedGuideSystem(): void {
-        this._guideManager = GuideManager.getInstance();
-        this._guideManager.init();
-        
-        // 注册复杂的引导流程
-        this.registerAdvancedGuideFlow();
-        
-        // 设置动态条件检查
-        this.setupDynamicConditions();
-        
-        // 监听游戏事件
-        this.setupGameEventListeners();
-    }
-    
-    /**
-     * 注册高级引导流程
-     */
-    private registerAdvancedGuideFlow(): void {
-        // 分支引导:根据玩家选择决定后续流程
-        const branchStep = new MultiChoiceGuideStep("choose_path", [
-            { id: "shop", text: "商店购买", target: "Canvas/UI/ShopButton" },
-            { id: "upgrade", text: "升级系统", target: "Canvas/UI/UpgradeButton" },
-            { id: "settings", text: "游戏设置", target: "Canvas/UI/SettingsButton" }
-        ]);
-        this._guideManager.registerStep(branchStep);
-        
-        // 商店流程
-        this.registerShopFlow();
-        
-        // 升级流程
-        this.registerUpgradeFlow();
-        
-        // 设置流程
-        this.registerSettingsFlow();
-        
-        // 条件步骤:等待金币达到要求
-        const waitCoinsStep = new WaitConditionGuideStep(
-            "wait_enough_coins",
-            () => this._gameData.coins >= 1000,
-            60000, // 60秒超时
-            "收集 1000 金币来解锁高级功能"
-        );
-        this._guideManager.registerStep(waitCoinsStep);
-        
-        // 动态步骤:根据之前的选择执行不同逻辑
-        const dynamicStep = new class extends GuideStep {
-            constructor(private parent: AdvancedExample) {
-                super("dynamic_step");
-            }
-            
-            canTrigger(): boolean {
-                const branchData = this.getStepData("choose_path");
-                return branchData && branchData.selectedChoice;
-            }
-            
-            execute(): void {
-                const branchData = this.getStepData("choose_path");
-                const choice = branchData.selectedChoice;
-                
-                console.log(`执行动态步骤,基于选择: ${choice}`);
-                
-                // 根据选择执行不同的逻辑
-                switch (choice) {
-                    case "shop":
-                        this.parent.executeShopLogic();
-                        break;
-                    case "upgrade":
-                        this.parent.executeUpgradeLogic();
-                        break;
-                    case "settings":
-                        this.parent.executeSettingsLogic();
-                        break;
-                }
-                
-                // 延迟完成,模拟异步操作
-                setTimeout(() => this.complete(), 2000);
-            }
-        }(this);
-        
-        this._guideManager.registerStep(dynamicStep);
-    }
-    
-    /**
-     * 注册商店流程
-     */
-    private registerShopFlow(): void {
-        // 商店购买引导
-        const shopBuyStep = new ShopBuyGuideStep("shop_buy", "power_up", 200);
-        this._guideManager.registerStep(shopBuyStep);
-        
-        // 购买后的确认步骤
-        const confirmBuyStep = new WaitConditionGuideStep(
-            "confirm_purchase",
-            () => this._gameData.hasShopItem,
-            10000,
-            "确认购买完成"
-        );
-        this._guideManager.registerStep(confirmBuyStep);
-    }
-    
-    /**
-     * 注册升级流程
-     */
-    private registerUpgradeFlow(): void {
-        const upgradeStep = new ClickGuideStep("upgrade_click", "Canvas/UI/UpgradeButton");
-        this._guideManager.registerStep(upgradeStep);
-        
-        const upgradeWaitStep = new WaitConditionGuideStep(
-            "wait_upgrade",
-            () => this._gameData.level >= 2,
-            15000,
-            "等待升级完成"
-        );
-        this._guideManager.registerStep(upgradeWaitStep);
-    }
-    
-    /**
-     * 注册设置流程
-     */
-    private registerSettingsFlow(): void {
-        const settingsStep = new ClickGuideStep("settings_click", "Canvas/UI/SettingsButton");
-        this._guideManager.registerStep(settingsStep);
-        
-        const settingsDialogStep = new DialogGuideStep(
-            "settings_info",
-            "在设置中,你可以调整音效、画质等选项来优化游戏体验。"
-        );
-        this._guideManager.registerStep(settingsDialogStep);
-    }
-    
-    /**
-     * 设置动态条件检查
-     */
-    private setupDynamicConditions(): void {
-        // 定期检查游戏状态,触发相应的引导步骤
-        this.schedule(() => {
-            this.checkGuideConditions();
-        }, 1.0); // 每秒检查一次
-    }
-    
-    /**
-     * 检查引导条件
-     */
-    private checkGuideConditions(): void {
-        const currentStep = this._guideManager.getCurrentStep();
-        
-        // 如果当前没有活跃的引导步骤,检查是否需要触发新的步骤
-        if (!currentStep) {
-            // 根据游戏状态决定下一个引导步骤
-            if (this._gameData.coins >= 1000 && !this._gameData.tutorialCompleted) {
-                this._guideManager.triggerStep("wait_enough_coins");
-            }
-        }
-        
-        // 检查并触发下一步
-        this._guideManager.checkAndTriggerNextStep();
-    }
-    
-    /**
-     * 设置游戏事件监听
-     */
-    private setupGameEventListeners(): void {
-        // 监听金币变化
-        cc.systemEvent.on("coins_changed", this.onCoinsChanged, this);
-        
-        // 监听等级变化
-        cc.systemEvent.on("level_changed", this.onLevelChanged, this);
-        
-        // 监听物品购买
-        cc.systemEvent.on("item_purchased", this.onItemPurchased, this);
-        
-        // 监听引导事件
-        this._guideManager.on('step_started', this.onStepStarted, this);
-        this._guideManager.on('step_completed', this.onStepCompleted, this);
-        this._guideManager.on('guide_completed', this.onGuideCompleted, this);
-    }
-    
-    /**
-     * 设置游戏逻辑
-     */
-    private setupGameLogic(): void {
-        // 商店按钮
-        if (this.shopButton) {
-            this.shopButton.on(cc.Node.EventType.TOUCH_END, this.onShopButtonClick, this);
-        }
-        
-        // 升级按钮
-        if (this.upgradeButton) {
-            this.upgradeButton.on(cc.Node.EventType.TOUCH_END, this.onUpgradeButtonClick, this);
-        }
-        
-        // 设置按钮
-        if (this.settingsButton) {
-            this.settingsButton.on(cc.Node.EventType.TOUCH_END, this.onSettingsButtonClick, this);
-        }
-        
-        // 定期增加金币(模拟游戏收益)
-        this.schedule(() => {
-            this.addCoins(10);
-        }, 2.0);
-        
-        this.updateUI();
-    }
-    
-    /**
-     * 开始条件引导
-     */
-    private startConditionalGuide(): void {
-        const dataManager = this._guideManager.getDataManager();
-        
-        // 检查是否是新用户或未完成引导
-        if (dataManager.isNewUser() || !dataManager.isGuideCompleted()) {
-            // 根据游戏进度决定从哪个步骤开始
-            const savedProgress = dataManager.getGuideProgress();
-            
-            if (savedProgress.completedSteps.length === 0) {
-                // 新用户,从选择分支开始
-                this._guideManager.triggerStep("choose_path");
-            } else {
-                // 继续之前的进度
-                this._guideManager.resumeGuide();
-            }
-        }
-    }
-    
-    // 游戏逻辑方法
-    private addCoins(amount: number): void {
-        this._gameData.coins += amount;
-        cc.systemEvent.emit("coins_changed", this._gameData.coins);
-        this.updateUI();
-    }
-    
-    private levelUp(): void {
-        this._gameData.level++;
-        cc.systemEvent.emit("level_changed", this._gameData.level);
-        this.updateUI();
-    }
-    
-    private updateUI(): void {
-        if (this.coinsLabel) {
-            this.coinsLabel.string = `金币: ${this._gameData.coins}`;
-        }
-    }
-    
-    // 按钮点击处理
-    private onShopButtonClick(): void {
-        console.log("商店按钮被点击");
-        // 模拟购买逻辑
-        if (this._gameData.coins >= 200) {
-            this._gameData.coins -= 200;
-            this._gameData.hasShopItem = true;
-            cc.systemEvent.emit("item_purchased", "power_up");
-            cc.systemEvent.emit("coins_changed", this._gameData.coins);
-            this.updateUI();
-        }
-    }
-    
-    private onUpgradeButtonClick(): void {
-        console.log("升级按钮被点击");
-        // 模拟升级逻辑
-        if (this._gameData.coins >= 100) {
-            this._gameData.coins -= 100;
-            this.levelUp();
-        }
-    }
-    
-    private onSettingsButtonClick(): void {
-        console.log("设置按钮被点击");
-        // 这里可以打开设置面板
-    }
-    
-    // 动态逻辑执行方法
-    public executeShopLogic(): void {
-        console.log("执行商店相关逻辑");
-        // 可以触发特殊的商店事件或动画
-    }
-    
-    public executeUpgradeLogic(): void {
-        console.log("执行升级相关逻辑");
-        // 可以显示升级特效或解锁新功能
-    }
-    
-    public executeSettingsLogic(): void {
-        console.log("执行设置相关逻辑");
-        // 可以显示设置教程或提示
-    }
-    
-    // 事件处理方法
-    private onCoinsChanged(coins: number): void {
-        console.log(`金币变化: ${coins}`);
-    }
-    
-    private onLevelChanged(level: number): void {
-        console.log(`等级变化: ${level}`);
-    }
-    
-    private onItemPurchased(itemId: string): void {
-        console.log(`物品购买: ${itemId}`);
-    }
-    
-    private onStepStarted(step: any): void {
-        console.log(`引导步骤开始: ${step.stepId}`);
-        
-        // 可以根据步骤类型播放不同的音效或动画
-        this.playStepStartEffect(step.stepId);
-    }
-    
-    private onStepCompleted(step: any): void {
-        console.log(`引导步骤完成: ${step.stepId}`);
-        
-        // 可以给予奖励或播放完成特效
-        this.giveStepReward(step.stepId);
-    }
-    
-    private onGuideCompleted(): void {
-        console.log("高级引导流程完成!");
-        
-        this._gameData.tutorialCompleted = true;
-        
-        // 给予完成奖励
-        this.addCoins(500);
-        
-        // 显示完成庆祝动画
-        this.showCompletionCelebration();
-    }
-    
-    private playStepStartEffect(stepId: string): void {
-        // 播放步骤开始音效
-        console.log(`播放步骤开始特效: ${stepId}`);
-    }
-    
-    private giveStepReward(stepId: string): void {
-        // 根据步骤给予不同奖励
-        const rewards = {
-            "choose_path": 50,
-            "shop_buy": 100,
-            "upgrade_click": 75,
-            "settings_click": 25
-        };
-        
-        const reward = rewards[stepId] || 10;
-        this.addCoins(reward);
-        
-        console.log(`获得步骤奖励: ${reward} 金币`);
-    }
-    
-    private showCompletionCelebration(): void {
-        // 创建庆祝动画
-        const celebration = new cc.Node("Celebration");
-        const label = celebration.addComponent(cc.Label);
-        label.string = "🎉 高级引导完成!🎉";
-        label.fontSize = 36;
-        
-        const canvas = cc.find("Canvas");
-        if (canvas) {
-            canvas.addChild(celebration);
-            
-            // 庆祝动画
-            const tween = cc.tween(celebration)
-                .to(0.5, { scale: 1.2 })
-                .to(0.5, { scale: 1.0 })
-                .delay(2.0)
-                .to(0.5, { opacity: 0 })
-                .call(() => celebration.removeFromParent());
-            
-            tween.start();
-        }
-    }
-    
-    /**
-     * 调试功能:模拟游戏状态
-     */
-    public simulateGameState(state: any): void {
-        Object.assign(this._gameData, state);
-        this.updateUI();
-        
-        // 触发相应的事件
-        cc.systemEvent.emit("coins_changed", this._gameData.coins);
-        cc.systemEvent.emit("level_changed", this._gameData.level);
-        
-        console.log("游戏状态已更新:", this._gameData);
-    }
-    
-    /**
-     * 调试功能:获取详细状态
-     */
-    public getDetailedStatus(): any {
-        const guideManager = this._guideManager;
-        const dataManager = guideManager.getDataManager();
-        
-        return {
-            gameData: this._gameData,
-            guideStatus: {
-                isActive: guideManager.isGuideActive(),
-                currentStep: guideManager.getCurrentStep()?.stepId,
-                completedSteps: dataManager.getGuideProgress().completedSteps,
-                guideIndex: dataManager.getGuideIndex(),
-                isCompleted: dataManager.isGuideCompleted()
-            },
-            registeredSteps: guideManager.getAllSteps().map(step => step.stepId)
-        };
-    }
-    
-    onDestroy() {
-        // 清理所有事件监听
-        cc.systemEvent.off("coins_changed", this.onCoinsChanged, this);
-        cc.systemEvent.off("level_changed", this.onLevelChanged, this);
-        cc.systemEvent.off("item_purchased", this.onItemPurchased, this);
-        
-        if (this._guideManager) {
-            this._guideManager.off('step_started', this.onStepStarted, this);
-            this._guideManager.off('step_completed', this.onStepCompleted, this);
-            this._guideManager.off('guide_completed', this.onGuideCompleted, this);
-        }
-        
-        // 清理定时器
-        this.unscheduleAllCallbacks();
-    }
-}
-
-// 高级调试功能
-if (CC_DEBUG) {
-    (window as any).AdvancedGuideDebug = {
-        simulateRichPlayer: () => {
-            const scene = cc.director.getScene();
-            const example = scene.getComponentInChildren(AdvancedExample);
-            if (example) {
-                example.simulateGameState({
-                    coins: 2000,
-                    level: 5,
-                    hasShopItem: true
-                });
-            }
-        },
-        
-        simulatePoorPlayer: () => {
-            const scene = cc.director.getScene();
-            const example = scene.getComponentInChildren(AdvancedExample);
-            if (example) {
-                example.simulateGameState({
-                    coins: 50,
-                    level: 1,
-                    hasShopItem: false
-                });
-            }
-        },
-        
-        getStatus: () => {
-            const scene = cc.director.getScene();
-            const example = scene.getComponentInChildren(AdvancedExample);
-            return example ? example.getDetailedStatus() : null;
-        }
-    };
-    
-    console.log("高级引导调试功能已启用:");
-    console.log("- AdvancedGuideDebug.simulateRichPlayer() - 模拟富有玩家");
-    console.log("- AdvancedGuideDebug.simulatePoorPlayer() - 模拟贫穷玩家");
-    console.log("- AdvancedGuideDebug.getStatus() - 获取详细状态");
-}

+ 0 - 9
assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/examples/AdvancedExample.ts.meta

@@ -1,9 +0,0 @@
-{
-  "ver": "4.0.24",
-  "importer": "typescript",
-  "imported": true,
-  "uuid": "bae35108-1c71-47ad-8688-39b81bf2d0ce",
-  "files": [],
-  "subMetas": {},
-  "userData": {}
-}

+ 0 - 401
assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/examples/BasicExample.ts

@@ -1,401 +0,0 @@
-/**
- * 新手引导插件基础使用示例
- * 演示如何在游戏中集成和使用新手引导系统
- */
-
-import { GuideManager } from "../scripts/GuideManager";
-import { ClickGuideStep, DragGuideStep, DialogGuideStep, WaitConditionGuideStep } from "../scripts/GuideSteps";
-
-const { ccclass, property } = cc._decorator;
-
-@ccclass
-export default class BasicExample extends cc.Component {
-    
-    @property(cc.Node)
-    startButton: cc.Node = null;
-    
-    @property(cc.Node)
-    item1: cc.Node = null;
-    
-    @property(cc.Node)
-    item2: cc.Node = null;
-    
-    @property(cc.Label)
-    levelLabel: cc.Label = null;
-    
-    private _guideManager: GuideManager;
-    private _playerLevel: number = 1;
-    
-    onLoad() {
-        // 初始化引导系统
-        this.initGuideSystem();
-        
-        // 设置游戏逻辑
-        this.setupGameLogic();
-    }
-    
-    start() {
-        // 检查是否需要开始引导
-        if (this.shouldStartGuide()) {
-            this._guideManager.startGuide();
-        }
-    }
-    
-    /**
-     * 初始化引导系统
-     */
-    private initGuideSystem(): void {
-        this._guideManager = GuideManager.getInstance();
-        this._guideManager.init();
-        
-        // 注册引导步骤
-        this.registerGuideSteps();
-        
-        // 监听引导事件
-        this.setupGuideEventListeners();
-    }
-    
-    /**
-     * 注册所有引导步骤
-     */
-    private registerGuideSteps(): void {
-        // 步骤1: 欢迎对话
-        const welcomeStep = new DialogGuideStep(
-            "welcome", 
-            "欢迎来到游戏!让我们开始新手引导,学习游戏的基本操作。"
-        );
-        this._guideManager.registerStep(welcomeStep);
-        
-        // 步骤2: 点击开始按钮
-        const clickStartStep = new ClickGuideStep(
-            "click_start", 
-            "Canvas/UI/StartButton"
-        );
-        this._guideManager.registerStep(clickStartStep);
-        
-        // 步骤3: 拖拽物品
-        const dragItemStep = new DragGuideStep(
-            "drag_item",
-            "Canvas/GameArea/Item1",
-            "Canvas/GameArea/Item2"
-        );
-        this._guideManager.registerStep(dragItemStep);
-        
-        // 步骤4: 等待升级
-        const waitLevelUpStep = new WaitConditionGuideStep(
-            "wait_level_up",
-            () => this._playerLevel >= 2,
-            30000 // 30秒超时
-        );
-        this._guideManager.registerStep(waitLevelUpStep);
-        
-        // 步骤5: 完成引导
-        const completeStep = new DialogGuideStep(
-            "guide_complete",
-            "恭喜!你已经完成了新手引导。现在可以自由探索游戏了!"
-        );
-        this._guideManager.registerStep(completeStep);
-    }
-    
-    /**
-     * 设置引导事件监听
-     */
-    private setupGuideEventListeners(): void {
-        // 监听步骤完成事件
-        this._guideManager.on('step_completed', this.onStepCompleted, this);
-        
-        // 监听引导完成事件
-        this._guideManager.on('guide_completed', this.onGuideCompleted, this);
-    }
-    
-    /**
-     * 设置游戏逻辑
-     */
-    private setupGameLogic(): void {
-        // 开始按钮点击事件
-        if (this.startButton) {
-            this.startButton.on(cc.Node.EventType.TOUCH_END, this.onStartButtonClick, this);
-        }
-        
-        // 物品拖拽事件
-        if (this.item1) {
-            this.setupItemDrag(this.item1);
-        }
-        
-        // 更新UI
-        this.updateUI();
-    }
-    
-    /**
-     * 设置物品拖拽
-     */
-    private setupItemDrag(item: cc.Node): void {
-        let isDragging = false;
-        let startPos: cc.Vec2;
-        
-        item.on(cc.Node.EventType.TOUCH_START, (event: cc.Event.EventTouch) => {
-            isDragging = true;
-            startPos = item.position;
-        });
-        
-        item.on(cc.Node.EventType.TOUCH_MOVE, (event: cc.Event.EventTouch) => {
-            if (!isDragging) return;
-            
-            const delta = event.getDelta();
-            item.position = item.position.add(delta);
-        });
-        
-        item.on(cc.Node.EventType.TOUCH_END, (event: cc.Event.EventTouch) => {
-            if (!isDragging) return;
-            isDragging = false;
-            
-            // 检查是否拖拽到目标位置
-            if (this.item2 && this.isNearTarget(item, this.item2)) {
-                this.onItemMerged();
-            } else {
-                // 回到原位置
-                item.position = startPos;
-            }
-        });
-    }
-    
-    /**
-     * 检查是否接近目标
-     */
-    private isNearTarget(item: cc.Node, target: cc.Node): boolean {
-        const distance = item.position.sub(target.position).mag();
-        return distance < 50; // 50像素内认为是接近
-    }
-    
-    /**
-     * 物品合并处理
-     */
-    private onItemMerged(): void {
-        console.log("物品合并成功!");
-        
-        // 升级
-        this._playerLevel++;
-        this.updateUI();
-        
-        // 触发升级事件
-        cc.systemEvent.emit("player_level_up", this._playerLevel);
-        
-        // 检查引导进度
-        this._guideManager.checkAndTriggerNextStep();
-    }
-    
-    /**
-     * 开始按钮点击处理
-     */
-    private onStartButtonClick(): void {
-        console.log("开始按钮被点击");
-        
-        // 这里可以添加游戏开始逻辑
-        this.startButton.active = false;
-        
-        // 检查引导进度
-        this._guideManager.checkAndTriggerNextStep();
-    }
-    
-    /**
-     * 更新UI显示
-     */
-    private updateUI(): void {
-        if (this.levelLabel) {
-            this.levelLabel.string = `等级: ${this._playerLevel}`;
-        }
-    }
-    
-    /**
-     * 检查是否应该开始引导
-     */
-    private shouldStartGuide(): boolean {
-        const dataManager = this._guideManager.getDataManager();
-        return dataManager.isNewUser() || !dataManager.isGuideCompleted();
-    }
-    
-    /**
-     * 步骤完成事件处理
-     */
-    private onStepCompleted(step: any): void {
-        console.log(`引导步骤完成: ${step.stepId}`);
-        
-        // 根据不同步骤执行不同的逻辑
-        switch (step.stepId) {
-            case "welcome":
-                // 欢迎步骤完成,可以显示开始按钮
-                if (this.startButton) {
-                    this.startButton.active = true;
-                }
-                break;
-                
-            case "click_start":
-                // 点击开始步骤完成,显示游戏区域
-                this.showGameArea();
-                break;
-                
-            case "drag_item":
-                // 拖拽步骤完成,可以添加更多物品
-                this.addMoreItems();
-                break;
-                
-            case "wait_level_up":
-                // 等级提升完成,显示祝贺信息
-                this.showCongratulations();
-                break;
-        }
-    }
-    
-    /**
-     * 引导完成事件处理
-     */
-    private onGuideCompleted(): void {
-        console.log("新手引导完成!");
-        
-        // 显示完成UI
-        this.showGuideCompleteUI();
-        
-        // 解锁所有功能
-        this.unlockAllFeatures();
-    }
-    
-    /**
-     * 显示游戏区域
-     */
-    private showGameArea(): void {
-        // 显示游戏物品
-        if (this.item1) this.item1.active = true;
-        if (this.item2) this.item2.active = true;
-        
-        console.log("游戏区域已显示");
-    }
-    
-    /**
-     * 添加更多物品
-     */
-    private addMoreItems(): void {
-        // 这里可以添加更多游戏物品
-        console.log("添加更多游戏物品");
-    }
-    
-    /**
-     * 显示祝贺信息
-     */
-    private showCongratulations(): void {
-        console.log("恭喜升级!");
-    }
-    
-    /**
-     * 显示引导完成UI
-     */
-    private showGuideCompleteUI(): void {
-        // 创建完成提示
-        const completeNode = new cc.Node("GuideComplete");
-        const label = completeNode.addComponent(cc.Label);
-        label.string = "新手引导完成!";
-        label.fontSize = 32;
-        
-        this.node.addChild(completeNode);
-        
-        // 3秒后自动隐藏
-        setTimeout(() => {
-            completeNode.removeFromParent();
-        }, 3000);
-    }
-    
-    /**
-     * 解锁所有功能
-     */
-    private unlockAllFeatures(): void {
-        // 解锁游戏的所有功能
-        console.log("所有功能已解锁");
-    }
-    
-    /**
-     * 调试功能:重置引导
-     */
-    public resetGuide(): void {
-        this._guideManager.resetGuide();
-        this._playerLevel = 1;
-        this.updateUI();
-        
-        // 重新显示开始按钮
-        if (this.startButton) {
-            this.startButton.active = true;
-        }
-        
-        console.log("引导已重置");
-    }
-    
-    /**
-     * 调试功能:跳过当前步骤
-     */
-    public skipCurrentStep(): void {
-        this._guideManager.skipCurrentStep();
-        console.log("已跳过当前步骤");
-    }
-    
-    /**
-     * 调试功能:获取引导状态
-     */
-    public getGuideStatus(): any {
-        const dataManager = this._guideManager.getDataManager();
-        const currentStep = this._guideManager.getCurrentStep();
-        
-        return {
-            isActive: this._guideManager.isGuideActive(),
-            currentStep: currentStep ? currentStep.stepId : null,
-            guideIndex: dataManager.getGuideIndex(),
-            isCompleted: dataManager.isGuideCompleted(),
-            progress: dataManager.getGuideProgress()
-        };
-    }
-    
-    onDestroy() {
-        // 清理事件监听
-        if (this._guideManager) {
-            this._guideManager.off('step_completed', this.onStepCompleted, this);
-            this._guideManager.off('guide_completed', this.onGuideCompleted, this);
-        }
-        
-        // 清理按钮事件
-        if (this.startButton) {
-            this.startButton.off(cc.Node.EventType.TOUCH_END, this.onStartButtonClick, this);
-        }
-    }
-}
-
-// 在全局作用域中添加调试函数(仅用于开发调试)
-if (CC_DEBUG) {
-    (window as any).GuideDebug = {
-        resetGuide: () => {
-            const scene = cc.director.getScene();
-            const example = scene.getComponentInChildren(BasicExample);
-            if (example) {
-                example.resetGuide();
-            }
-        },
-        
-        skipStep: () => {
-            const scene = cc.director.getScene();
-            const example = scene.getComponentInChildren(BasicExample);
-            if (example) {
-                example.skipCurrentStep();
-            }
-        },
-        
-        getStatus: () => {
-            const scene = cc.director.getScene();
-            const example = scene.getComponentInChildren(BasicExample);
-            if (example) {
-                return example.getGuideStatus();
-            }
-            return null;
-        }
-    };
-    
-    console.log("引导调试功能已启用:");
-    console.log("- GuideDebug.resetGuide() - 重置引导");
-    console.log("- GuideDebug.skipStep() - 跳过当前步骤");
-    console.log("- GuideDebug.getStatus() - 获取引导状态");
-}

+ 0 - 9
assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources.meta

@@ -1,9 +0,0 @@
-{
-  "ver": "1.2.0",
-  "importer": "directory",
-  "imported": true,
-  "uuid": "19bb9ed4-937d-49c3-809b-4d0f6ac8f0de",
-  "files": [],
-  "subMetas": {},
-  "userData": {}
-}

+ 0 - 9
assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources/spine.meta

@@ -1,9 +0,0 @@
-{
-  "ver": "1.2.0",
-  "importer": "directory",
-  "imported": true,
-  "uuid": "a0e7acc1-1e68-433b-add2-e8522779d877",
-  "files": [],
-  "subMetas": {},
-  "userData": {}
-}

+ 0 - 19
assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources/spine/tut_hand.atlas

@@ -1,19 +0,0 @@
-tut_hand.png
-size: 256,256
-format: RGBA8888
-filter: Linear,Linear
-repeat: none
-e0
-  rotate: false
-  xy: 2, 2
-  size: 100, 100
-  orig: 100, 100
-  offset: 0, 0
-  index: -1
-hand_tut
-  rotate: false
-  xy: 104, 2
-  size: 80, 120
-  orig: 80, 120
-  offset: 0, 0
-  index: -1

+ 0 - 11
assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources/spine/tut_hand.atlas.meta

@@ -1,11 +0,0 @@
-{
-  "ver": "1.0.1",
-  "importer": "text",
-  "imported": true,
-  "uuid": "02e6b549-cc01-4e72-9be2-073fe38485c0",
-  "files": [
-    ".json"
-  ],
-  "subMetas": {},
-  "userData": {}
-}

+ 0 - 118
assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources/spine/tut_hand.json

@@ -1,118 +0,0 @@
-{
-  "skeleton": {
-    "hash": "tut_hand",
-    "spine": "3.8.95",
-    "x": -100,
-    "y": -100,
-    "width": 144,
-    "height": 264
-  },
-  "bones": [
-    {
-      "name": "root"
-    },
-    {
-      "name": "hand",
-      "parent": "root",
-      "length": 50,
-      "x": 0,
-      "y": 100
-    }
-  ],
-  "slots": [
-    {
-      "name": "hand_slot",
-      "bone": "hand",
-      "attachment": "hand_tut"
-    }
-  ],
-  "skins": [
-    {
-      "name": "default",
-      "attachments": {
-        "hand_slot": {
-          "hand_tut": {
-            "x": 0,
-            "y": 0,
-            "width": 80,
-            "height": 120
-          }
-        }
-      }
-    }
-  ],
-  "animations": {
-    "idle": {
-      "slots": {
-        "hand_slot": {
-          "color": [
-            {
-              "color": "ffffffff"
-            }
-          ]
-        }
-      }
-    },
-    "tap": {
-      "bones": {
-        "hand": {
-          "scale": [
-            {
-              "x": 1,
-              "y": 1
-            },
-            {
-              "time": 0.5,
-              "x": 1.2,
-              "y": 1.2
-            },
-            {
-              "time": 1,
-              "x": 1,
-              "y": 1
-            }
-          ]
-        }
-      },
-      "slots": {
-        "hand_slot": {
-          "color": [
-            {
-              "color": "ffffffff"
-            },
-            {
-              "time": 0.25,
-              "color": "ffffff80"
-            },
-            {
-              "time": 0.5,
-              "color": "ffffffff"
-            }
-          ]
-        }
-      }
-    },
-    "drag": {
-      "bones": {
-        "hand": {
-          "translate": [
-            {
-              "x": 0,
-              "y": 0
-            },
-            {
-              "time": 1,
-              "x": 100,
-              "y": 0
-            },
-            {
-              "time": 1.5,
-              "x": 0,
-              "y": 0
-            }
-          ]
-        }
-      }
-    }
-  }
-}

+ 0 - 13
assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources/spine/tut_hand.json.meta

@@ -1,13 +0,0 @@
-{
-  "ver": "1.2.7",
-  "importer": "spine-data",
-  "imported": true,
-  "uuid": "867b00df-218a-4166-a8ea-8f0813a2b690",
-  "files": [
-    ".json"
-  ],
-  "subMetas": {},
-  "userData": {
-    "atlasUuid": "02e6b549-cc01-4e72-9be2-073fe38485c0"
-  }
-}

BIN
assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources/spine/tut_hand.png


+ 0 - 134
assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources/spine/tut_hand.png.meta

@@ -1,134 +0,0 @@
-{
-  "ver": "1.0.27",
-  "importer": "image",
-  "imported": true,
-  "uuid": "db336bea-8063-4ee0-b63f-a731be3b10d0",
-  "files": [
-    ".json",
-    ".png"
-  ],
-  "subMetas": {
-    "6c48a": {
-      "importer": "texture",
-      "uuid": "db336bea-8063-4ee0-b63f-a731be3b10d0@6c48a",
-      "displayName": "tut_hand",
-      "id": "6c48a",
-      "name": "texture",
-      "userData": {
-        "wrapModeS": "clamp-to-edge",
-        "wrapModeT": "clamp-to-edge",
-        "imageUuidOrDatabaseUri": "db336bea-8063-4ee0-b63f-a731be3b10d0",
-        "isUuid": true,
-        "visible": false,
-        "minfilter": "linear",
-        "magfilter": "linear",
-        "mipfilter": "none",
-        "anisotropy": 0
-      },
-      "ver": "1.0.22",
-      "imported": true,
-      "files": [
-        ".json"
-      ],
-      "subMetas": {}
-    },
-    "f9941": {
-      "importer": "sprite-frame",
-      "uuid": "db336bea-8063-4ee0-b63f-a731be3b10d0@f9941",
-      "displayName": "tut_hand",
-      "id": "f9941",
-      "name": "spriteFrame",
-      "userData": {
-        "trimThreshold": 1,
-        "rotated": false,
-        "offsetX": -1,
-        "offsetY": 0.5,
-        "trimX": 0,
-        "trimY": 2,
-        "width": 142,
-        "height": 259,
-        "rawWidth": 144,
-        "rawHeight": 264,
-        "borderTop": 0,
-        "borderBottom": 0,
-        "borderLeft": 0,
-        "borderRight": 0,
-        "packable": true,
-        "pixelsToUnit": 100,
-        "pivotX": 0.5,
-        "pivotY": 0.5,
-        "meshType": 0,
-        "vertices": {
-          "rawPosition": [
-            -71,
-            -129.5,
-            0,
-            71,
-            -129.5,
-            0,
-            -71,
-            129.5,
-            0,
-            71,
-            129.5,
-            0
-          ],
-          "indexes": [
-            0,
-            1,
-            2,
-            2,
-            1,
-            3
-          ],
-          "uv": [
-            0,
-            262,
-            142,
-            262,
-            0,
-            3,
-            142,
-            3
-          ],
-          "nuv": [
-            0,
-            0.011363636363636364,
-            0.9861111111111112,
-            0.011363636363636364,
-            0,
-            0.9924242424242424,
-            0.9861111111111112,
-            0.9924242424242424
-          ],
-          "minPos": [
-            -71,
-            -129.5,
-            0
-          ],
-          "maxPos": [
-            71,
-            129.5,
-            0
-          ]
-        },
-        "isUuid": true,
-        "imageUuidOrDatabaseUri": "db336bea-8063-4ee0-b63f-a731be3b10d0@6c48a",
-        "atlasUuid": "",
-        "trimType": "auto"
-      },
-      "ver": "1.0.12",
-      "imported": true,
-      "files": [
-        ".json"
-      ],
-      "subMetas": {}
-    }
-  },
-  "userData": {
-    "type": "sprite-frame",
-    "hasAlpha": true,
-    "fixAlphaTransparencyArtifacts": false,
-    "redirect": "db336bea-8063-4ee0-b63f-a731be3b10d0@6c48a"
-  }
-}

BIN
assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources/spine/tut_hand.skel


+ 0 - 14
assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources/spine/tut_hand.skel.meta

@@ -1,14 +0,0 @@
-{
-  "ver": "1.2.7",
-  "importer": "spine-data",
-  "imported": true,
-  "uuid": "f2b29f12-002f-4458-a460-8a6badb9fe9c",
-  "files": [
-    ".bin",
-    ".json"
-  ],
-  "subMetas": {},
-  "userData": {
-    "atlasUuid": "02e6b549-cc01-4e72-9be2-073fe38485c0"
-  }
-}

+ 0 - 9
assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/resources/textures.meta

@@ -1,9 +0,0 @@
-{
-  "ver": "1.2.0",
-  "importer": "directory",
-  "imported": true,
-  "uuid": "080eb1cf-5931-4b91-86d7-0dd2ebc10a65",
-  "files": [],
-  "subMetas": {},
-  "userData": {}
-}

+ 0 - 4
assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/scripts/GuideSteps.ts

@@ -44,9 +44,6 @@ export class ClickGuideStep extends GuideStep {
         
         // 添加点击监听
         this._targetNode.on(Node.EventType.TOUCH_END, this._clickHandler, this);
-        
-        // 创建高亮效果
-        uiController.createHighlightEffect(this._targetNode);
     }
     
     private findTargetNode(): void {
@@ -71,7 +68,6 @@ export class ClickGuideStep extends GuideStep {
         // 隐藏引导UI
         const uiController = this._manager.getUIController();
         uiController.hideGuideUI("guild_1");
-        uiController.removeHighlightEffect();
     }
 }
 

+ 9 - 107
assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/scripts/GuideUIController.ts

@@ -3,7 +3,7 @@
  * 负责引导相关UI的显示、隐藏和动画控制
  */
 
-import { sp, Node, director, Vec3, Color, Graphics, find, UITransform, tween, Tween, _decorator, Component } from "cc";
+import { sp, Node, director, Vec3, find, UITransform, tween, Tween, _decorator, Component } from "cc";
 import EventBus from "../../../scripts/Core/EventBus";
 const { ccclass, property } = _decorator;
 
@@ -37,12 +37,6 @@ export class GuideUIController extends Component {
     @property({ type: [Node], tooltip: '手指动画终止位置节点(按步骤顺序配置)' })
     public fingerTargetNodes: Node[] = [];
 
-    @property({ type: Number, tooltip: '暗遮罩不透明度(0-255)' })
-    public maskDarkAlpha: number = 160;
-
-    @property({ type: Number, tooltip: '高亮不透明度(0-255)' })
-    public maskLightAlpha: number = 32;
-
     @property({ type: Number, tooltip: 'auto 步骤延时秒数' })
     public autoStepDelay: number = 1.0;
 
@@ -58,6 +52,7 @@ export class GuideUIController extends Component {
     private _tutorialTargetGrids: string[] = ['Grid_3_1', 'Grid_4_1']; // Target grids for tutorial
     private _tutorialBlockContainers: string[] = ['Block1', 'Block2']; // Block containers for tutorial
 
+
     /**
      * 初始化UI控制器
      */
@@ -75,11 +70,10 @@ export class GuideUIController extends Component {
      * Setup tutorial steps for block placement
      */
     private setupTutorialSteps(): void {
-        // Clear existing configurations
+        // Clear existing configurations (except guideStepsMaskAreas which is manually configured)
         this.guideStepsTargets = [];
         this.guideStepsActions = [];
         this.guideStepsEvents = [];
-        this.guideStepsMaskAreas = [];
 
         // Find tutorial nodes
         const block1Container = find('Canvas/GameLevelUI/BlockSelectionUI/diban/kuang/Block1');
@@ -104,19 +98,16 @@ export class GuideUIController extends Component {
         this.guideStepsTargets.push(block1Container);
         this.guideStepsActions.push('wait_event');
         this.guideStepsEvents.push('TUTORIAL_BLOCK_1_PLACED');
-        this.guideStepsMaskAreas.push(block1Container);
 
         // Step 1: Point to second block and wait for drag to Grid_4_1  
         this.guideStepsTargets.push(block2Container);
         this.guideStepsActions.push('wait_event');
         this.guideStepsEvents.push('TUTORIAL_BLOCK_2_PLACED');
-        this.guideStepsMaskAreas.push(block2Container);
 
         // Step 2: Tutorial completion
         this.guideStepsTargets.push(grid4_1);
         this.guideStepsActions.push('auto');
         this.guideStepsEvents.push('');
-        this.guideStepsMaskAreas.push(null);
 
         console.log('[GuideUIController] Tutorial steps configured');
     }
@@ -539,101 +530,17 @@ export class GuideUIController extends Component {
     }
 
     /**
-     * 创建高亮效果(统一为圆角矩形;可用 GuideMaskAreas 的子节点指定区域
+     * 为目标节点创建高亮效果(已废弃,改为外部遮罩节点管理
      */
-    public createHighlightEffect(targetNode: Node, stepIndex: number = -1): void {
-        if (!targetNode) return;
-
-        const canvas = find("Canvas") as Node;
-        if (!canvas) {
-            console.warn("未找到 Canvas,无法创建高亮遮罩");
-            return;
-        }
-
-        let maskNode = canvas.getChildByName("guide_mask");
-        if (!maskNode) {
-            maskNode = new Node("guide_mask");
-            canvas.addChild(maskNode);
-        }
-
-        const maskUi = maskNode.getComponent(UITransform) || maskNode.addComponent(UITransform);
-        const graphics = maskNode.getComponent(Graphics) || maskNode.addComponent(Graphics);
-        const canvasUi = canvas.getComponent(UITransform);
-        if (!canvasUi) return;
-
-        // 统一参数(无需在检查器填写)
-        const darkAlpha = (this.maskDarkAlpha ?? 160);
-        const lightAlpha = (this.maskLightAlpha ?? 32);
-        const defaultRadius = 12;
-        const defaultPadding = 8;
-
-        graphics.clear();
-
-        // 背景遮罩
-        graphics.fillColor = new Color(0, 0, 0, darkAlpha);
-        graphics.rect(-canvasUi.width / 2, -canvasUi.height / 2, canvasUi.width, canvasUi.height);
-        graphics.fill();
-
-        // 选择用于计算形状的节点:优先使用检查器绑定的 guideStepsMaskAreas[idx]
-        const shapeTargetCandidate = (stepIndex >= 0 && this.guideStepsMaskAreas && this.guideStepsMaskAreas[stepIndex])
-            ? this.guideStepsMaskAreas[stepIndex]
-            : null;
-        const shapeTarget = (shapeTargetCandidate && shapeTargetCandidate.isValid) ? shapeTargetCandidate : targetNode;
-        const targetUi = shapeTarget.getComponent(UITransform) || targetNode.getComponent(UITransform);
-        if (!targetUi) {
-            console.warn("目标或遮罩区域缺少 UITransform");
-            return;
-        }
-
-        const worldPos = targetUi.convertToWorldSpaceAR(new Vec3(0, 0, 0));
-        const localPos = maskUi.convertToNodeSpaceAR(worldPos);
-
-        graphics.fillColor = new Color(255, 255, 255, lightAlpha);
-
-        // 如果使用占位节点,默认不再附加 padding;否则对目标加少量 padding
-        const usingCustomArea = (shapeTarget !== targetNode);
-        const padding = usingCustomArea ? 0 : defaultPadding;
-        const radius = defaultRadius;
-
-        const width = targetUi.width + padding * 2;
-        const height = targetUi.height + padding * 2;
-        const x = localPos.x - width / 2;
-        const y = localPos.y - height / 2;
-
-        const gAny: any = graphics as any;
-        if (gAny.roundRect) {
-            gAny.roundRect(x, y, width, height, Math.max(0, radius));
-        } else {
-            const r = Math.max(0, Math.min(radius, Math.min(width, height) / 2));
-            graphics.moveTo(x + r, y);
-            graphics.lineTo(x + width - r, y);
-            graphics.quadraticCurveTo(x + width, y, x + width, y + r);
-            graphics.lineTo(x + width, y + height - r);
-            graphics.quadraticCurveTo(x + width, y + height, x + width - r, y + height);
-            graphics.lineTo(x + r, y + height);
-            graphics.quadraticCurveTo(x, y + height, x, y + height - r);
-            graphics.lineTo(x, y + r);
-            graphics.quadraticCurveTo(x, y, x + r, y);
-        }
-        graphics.fill();
-
-        this.setGuideUIZIndex(maskNode, 999);
+    public createHighlightEffect(targetNode: Node): void {
+        // 高亮与遮罩由外部场景节点/guideStepsMaskAreas管理,此处不再创建
     }
 
-    // 已移除:遮罩区域节点查找方法,改为使用 guideStepsMaskAreas[] 属性绑定
-
     /**
-     * 移除高亮效果
+     * 移除高亮效果(已废弃,改为外部遮罩节点管理)
      */
     public removeHighlightEffect(): void {
-        const canvas = find("Canvas") as Node;
-        if (canvas) {
-            const maskNode = canvas.getChildByName("guide_mask");
-            if (maskNode) {
-                maskNode.removeFromParent();
-                maskNode.destroy();
-            }
-        }
+        // 无需清理,本控制器不再管理高亮遮罩
     }
 
     /**
@@ -659,7 +566,6 @@ export class GuideUIController extends Component {
         if (idx < 0 || idx >= this.guideStepsTargets.length) {
             console.log('[GuideUIController] 引导步骤结束');
             this.hideAllGuideUI();
-            this.removeHighlightEffect();
             return;
         }
 
@@ -711,9 +617,6 @@ export class GuideUIController extends Component {
             // 其他步骤使用普通指向动画
             this.createPointingAnimation('guild_1', worldPos);
         }
-        
-        // 创建高亮效果
-        this.createHighlightEffect(target, idx);
 
         // 清理旧监听
         this.clearCurrentStepListeners();
@@ -755,7 +658,6 @@ export class GuideUIController extends Component {
         if (finger) {
             Tween.stopAllByTarget(finger);
         }
-        this.removeHighlightEffect();
 
         // 清理事件监听/计时器
         this.clearCurrentStepListeners();
@@ -797,7 +699,6 @@ export class GuideUIController extends Component {
     public stopGuideSequence(): void {
         this.clearCurrentStepListeners();
         this.hideAllGuideUI();
-        this.removeHighlightEffect();
         this._currentStepIndex = -1;
     }
 
@@ -817,5 +718,6 @@ export class GuideUIController extends Component {
 
     onDestroy() {
         this.stopGuideSequence();
+        // 高亮效果清理由外部负责
     }
 }

+ 98 - 0
assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/scripts/RoundRectMask.ts

@@ -0,0 +1,98 @@
+
+import { _decorator, Mask, UITransform, Graphics, Component } from 'cc';
+
+const { ccclass, property } = _decorator;
+
+/**
+ * 圆角矩形遮罩组件
+ * 继承自Cocos Creator的Mask组件,提供圆角矩形遮罩功能
+ * 
+ * 使用方法:
+ * 1. 将此组件添加到需要圆角遮罩的节点上,确保节点有Mask组件,需要把Mask类型选为GRAPHICS_RECT
+ * 2. 设置radius属性来调整圆角大小
+ * 3. 确保节点有UITransform组件
+ */
+@ccclass("RoundRectMask")
+export class RoundRectMask extends Mask {
+  @property({
+    tooltip: "圆角半径,会自动限制在合理范围内",
+    min: 0
+  })
+  radius: number = 10;
+
+  private _lastWidth: number = 0;
+  private _lastHeight: number = 0;
+  private _lastRadius: number = 0;
+
+  public onEnable() {
+    super.onEnable();
+    this._updateGraphics();
+  }
+
+  protected update() {
+    // 性能优化:只在尺寸或半径发生变化时才重新绘制
+    const uiTransform = this.getComponent(UITransform);
+    if (uiTransform) {
+      const { width, height } = uiTransform;
+      if (width !== this._lastWidth || height !== this._lastHeight || this.radius !== this._lastRadius) {
+        this._lastWidth = width;
+        this._lastHeight = height;
+        this._lastRadius = this.radius;
+        this._updateGraphics();
+      }
+    }
+  }
+
+  protected _updateGraphics() {
+    // 检查graphics对象和遮罩类型是否有效
+    if (!this._graphics || (this._type !== Mask.Type.GRAPHICS_RECT && this._type !== Mask.Type.GRAPHICS_ELLIPSE)) {
+      return;
+    }
+
+    // 获取UI变换组件
+    const uiTransform = this.getComponent(UITransform);
+    if (!uiTransform) {
+      console.warn('RoundRectMask: UITransform component not found');
+      return;
+    }
+
+    const { width, height, anchorX, anchorY } = uiTransform;
+
+    // 确保尺寸有效
+    if (width <= 0 || height <= 0) {
+      return;
+    }
+
+    const graphics = this._graphics;
+    graphics.clear();
+    
+    // 计算绘制位置(考虑锚点)
+    const x = -width * anchorX;
+    const y = -height * anchorY;
+    
+    // 确保圆角半径不超过尺寸的一半,避免异常显示
+    const maxRadius = Math.min(width, height) / 2;
+    const actualRadius = Math.max(0, Math.min(this.radius, maxRadius));
+    
+    // 绘制圆角矩形
+    graphics.roundRect(x, y, width, height, actualRadius);
+    graphics.fill();
+  }
+
+  /**
+   * 手动更新遮罩图形
+   * 当需要立即更新遮罩时调用此方法
+   */
+  public updateMask() {
+    this._updateGraphics();
+  }
+
+  /**
+   * 设置圆角半径
+   * @param radius 新的圆角半径
+   */
+  public setRadius(radius: number) {
+    this.radius = Math.max(0, radius);
+    this._updateGraphics();
+  }
+}

+ 1 - 1
assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/examples/BasicExample.ts.meta → assets/NewbieGuidePlugin-v1.0.0/NewbieGuidePlugin-v1.0.0/scripts/RoundRectMask.ts.meta

@@ -2,7 +2,7 @@
   "ver": "4.0.24",
   "importer": "typescript",
   "imported": true,
-  "uuid": "d6606f85-7bda-4353-83d5-89c7a51bb2b3",
+  "uuid": "0988b3d3-eff0-4b12-bd09-ab1b5bca7ec2",
   "files": [],
   "subMetas": {},
   "userData": {}

+ 1 - 1
assets/NewbieGuidePlugin-v1.0.0/hand/skeleton.json

@@ -1 +1 @@
-{"skeleton":{"hash":"qSkDy7H3NC5EKh2jLq6sp4gjTvQ","spine":"3.8.75","x":-356,"y":-349,"width":713,"height":698,"images":"","audio":""},"bones":[{"name":"root"}],"slots":[{"name":"test","bone":"root","attachment":"point"}],"skins":[{"name":"default","attachments":{"test":{"fist":{"x":0.5,"width":62,"height":62},"point":{"x":0.5,"width":70,"height":69}}}}],"animations":{"animation":{"slots":{"test":{"attachment":[{"name":"fist"},{"time":0.1667,"name":"point"},{"time":0.3333,"name":"fist"}]}}}}}
+{"skeleton":{"hash":"g6iPK21Q/qBFG8o7jlXAZhGqgy0","spine":"3.8.75","x":-34.5,"y":-34.5,"width":70,"height":69,"images":"","audio":""},"bones":[{"name":"root"}],"slots":[{"name":"test","bone":"root","attachment":"point"}],"skins":[{"name":"default","attachments":{"test":{"fist":{"x":0.5,"width":62,"height":62},"point":{"x":0.5,"width":70,"height":69}}}}],"animations":{"animation":{"slots":{"test":{"attachment":[{"time":0.1667,"name":"fist"},{"time":0.3333,"name":"point"}]}}}}}

+ 192 - 102
assets/Scenes/GameLevel.scene

@@ -26,7 +26,7 @@
     "_active": true,
     "_components": [],
     "_prefab": {
-      "__id__": 1355
+      "__id__": 1362
     },
     "_lpos": {
       "__type__": "cc.Vec3",
@@ -57,7 +57,7 @@
     },
     "autoReleaseAssets": false,
     "_globals": {
-      "__id__": 1387
+      "__id__": 1394
     },
     "_id": "29694223-a59c-44b3-acb0-80ab92d103f5"
   },
@@ -149,25 +149,25 @@
         "__id__": 1308
       },
       {
-        "__id__": 1326
+        "__id__": 1332
       }
     ],
     "_active": true,
     "_components": [
       {
-        "__id__": 1350
+        "__id__": 1357
       },
       {
-        "__id__": 1351
+        "__id__": 1358
       },
       {
-        "__id__": 1352
+        "__id__": 1359
       },
       {
-        "__id__": 1353
+        "__id__": 1360
       },
       {
-        "__id__": 1354
+        "__id__": 1361
       }
     ],
     "_prefab": null,
@@ -45334,7 +45334,7 @@
     "_active": true,
     "_components": [
       {
-        "__id__": 1325
+        "__id__": 1331
       }
     ],
     "_prefab": null,
@@ -45427,6 +45427,18 @@
       },
       {
         "__id__": 1324
+      },
+      {
+        "__id__": 1325
+      },
+      {
+        "__id__": 1327
+      },
+      {
+        "__id__": 1328
+      },
+      {
+        "__id__": 1330
       }
     ],
     "removedComponents": []
@@ -45574,6 +45586,66 @@
     ],
     "value": ""
   },
+  {
+    "__type__": "CCPropertyOverrideInfo",
+    "targetInfo": {
+      "__id__": 1326
+    },
+    "propertyPath": [
+      "_contentSize"
+    ],
+    "value": {
+      "__type__": "cc.Size",
+      "width": 713,
+      "height": 698
+    }
+  },
+  {
+    "__type__": "cc.TargetInfo",
+    "localID": [
+      "43gCdDux9JPap5D7nfF0Bt"
+    ]
+  },
+  {
+    "__type__": "CCPropertyOverrideInfo",
+    "targetInfo": {
+      "__id__": 1326
+    },
+    "propertyPath": [
+      "_anchorPoint"
+    ],
+    "value": {
+      "__type__": "cc.Vec2",
+      "x": 0.4992987377279102,
+      "y": 0.5
+    }
+  },
+  {
+    "__type__": "CCPropertyOverrideInfo",
+    "targetInfo": {
+      "__id__": 1329
+    },
+    "propertyPath": [
+      "defaultSkin"
+    ],
+    "value": ""
+  },
+  {
+    "__type__": "cc.TargetInfo",
+    "localID": [
+      "0314rhuS9LVbkCHAYLfXeV"
+    ]
+  },
+  {
+    "__type__": "CCPropertyOverrideInfo",
+    "targetInfo": {
+      "__id__": 1329
+    },
+    "propertyPath": [
+      "defaultAnimation"
+    ],
+    "value": ""
+  },
   {
     "__type__": "cc.UITransform",
     "_name": "",
@@ -45606,22 +45678,22 @@
     },
     "_children": [
       {
-        "__id__": 1327
+        "__id__": 1333
       },
       {
-        "__id__": 1336
+        "__id__": 1343
       },
       {
-        "__id__": 1339
+        "__id__": 1346
       }
     ],
     "_active": true,
     "_components": [
       {
-        "__id__": 1348
+        "__id__": 1355
       },
       {
-        "__id__": 1349
+        "__id__": 1356
       }
     ],
     "_prefab": null,
@@ -45660,23 +45732,26 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "_parent": {
-      "__id__": 1326
+      "__id__": 1332
     },
     "_children": [
       {
-        "__id__": 1328
+        "__id__": 1334
       }
     ],
     "_active": true,
     "_components": [
       {
-        "__id__": 1333
+        "__id__": 1339
       },
       {
-        "__id__": 1334
+        "__id__": 1340
       },
       {
-        "__id__": 1335
+        "__id__": 1341
+      },
+      {
+        "__id__": 1342
       }
     ],
     "_prefab": null,
@@ -45715,22 +45790,22 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "_parent": {
-      "__id__": 1327
+      "__id__": 1333
     },
     "_children": [],
     "_active": true,
     "_components": [
       {
-        "__id__": 1329
+        "__id__": 1335
       },
       {
-        "__id__": 1330
+        "__id__": 1336
       },
       {
-        "__id__": 1331
+        "__id__": 1337
       },
       {
-        "__id__": 1332
+        "__id__": 1338
       }
     ],
     "_prefab": null,
@@ -45769,7 +45844,7 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "node": {
-      "__id__": 1328
+      "__id__": 1334
     },
     "_enabled": true,
     "__prefab": null,
@@ -45791,7 +45866,7 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "node": {
-      "__id__": 1328
+      "__id__": 1334
     },
     "_enabled": true,
     "__prefab": null,
@@ -45830,7 +45905,7 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "node": {
-      "__id__": 1328
+      "__id__": 1334
     },
     "_enabled": true,
     "__prefab": null,
@@ -45860,7 +45935,7 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "node": {
-      "__id__": 1328
+      "__id__": 1334
     },
     "_enabled": true,
     "__prefab": null,
@@ -45872,7 +45947,7 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "node": {
-      "__id__": 1327
+      "__id__": 1333
     },
     "_enabled": true,
     "__prefab": null,
@@ -45894,7 +45969,7 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "node": {
-      "__id__": 1327
+      "__id__": 1333
     },
     "_enabled": true,
     "__prefab": null,
@@ -45910,7 +45985,7 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "node": {
-      "__id__": 1327
+      "__id__": 1333
     },
     "_enabled": true,
     "__prefab": null,
@@ -45944,22 +46019,39 @@
     "_miterLimit": 10,
     "_id": "4bBYZQ/+VIaopRxAE6atB4"
   },
+  {
+    "__type__": "0988bPT7/BLEr0Jqxtbyn7C",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 1333
+    },
+    "_enabled": true,
+    "__prefab": null,
+    "_type": 0,
+    "_inverted": true,
+    "_segments": 64,
+    "_alphaThreshold": 0.1,
+    "radius": 15,
+    "_id": "90bN/uKONO/KTF4vB0cvnE"
+  },
   {
     "__type__": "cc.Node",
     "_name": "Frame",
     "_objFlags": 0,
     "__editorExtras__": {},
     "_parent": {
-      "__id__": 1326
+      "__id__": 1332
     },
     "_children": [],
     "_active": true,
     "_components": [
       {
-        "__id__": 1337
+        "__id__": 1344
       },
       {
-        "__id__": 1338
+        "__id__": 1345
       }
     ],
     "_prefab": null,
@@ -45998,7 +46090,7 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "node": {
-      "__id__": 1336
+      "__id__": 1343
     },
     "_enabled": true,
     "__prefab": null,
@@ -46020,7 +46112,7 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "node": {
-      "__id__": 1336
+      "__id__": 1343
     },
     "_enabled": true,
     "__prefab": null,
@@ -46059,23 +46151,23 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "_parent": {
-      "__id__": 1326
+      "__id__": 1332
     },
     "_children": [
       {
-        "__id__": 1340
+        "__id__": 1347
       }
     ],
     "_active": false,
     "_components": [
       {
-        "__id__": 1345
+        "__id__": 1352
       },
       {
-        "__id__": 1346
+        "__id__": 1353
       },
       {
-        "__id__": 1347
+        "__id__": 1354
       }
     ],
     "_prefab": null,
@@ -46114,22 +46206,22 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "_parent": {
-      "__id__": 1339
+      "__id__": 1346
     },
     "_children": [],
     "_active": true,
     "_components": [
       {
-        "__id__": 1341
+        "__id__": 1348
       },
       {
-        "__id__": 1342
+        "__id__": 1349
       },
       {
-        "__id__": 1343
+        "__id__": 1350
       },
       {
-        "__id__": 1344
+        "__id__": 1351
       }
     ],
     "_prefab": null,
@@ -46168,7 +46260,7 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "node": {
-      "__id__": 1340
+      "__id__": 1347
     },
     "_enabled": true,
     "__prefab": null,
@@ -46190,7 +46282,7 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "node": {
-      "__id__": 1340
+      "__id__": 1347
     },
     "_enabled": true,
     "__prefab": null,
@@ -46229,7 +46321,7 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "node": {
-      "__id__": 1340
+      "__id__": 1347
     },
     "_enabled": true,
     "__prefab": null,
@@ -46259,7 +46351,7 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "node": {
-      "__id__": 1340
+      "__id__": 1347
     },
     "_enabled": true,
     "__prefab": null,
@@ -46271,7 +46363,7 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "node": {
-      "__id__": 1339
+      "__id__": 1346
     },
     "_enabled": true,
     "__prefab": null,
@@ -46293,7 +46385,7 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "node": {
-      "__id__": 1339
+      "__id__": 1346
     },
     "_enabled": true,
     "__prefab": null,
@@ -46309,7 +46401,7 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "node": {
-      "__id__": 1339
+      "__id__": 1346
     },
     "_enabled": true,
     "__prefab": null,
@@ -46349,7 +46441,7 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "node": {
-      "__id__": 1326
+      "__id__": 1332
     },
     "_enabled": true,
     "__prefab": null,
@@ -46371,7 +46463,7 @@
     "_objFlags": 0,
     "__editorExtras__": {},
     "node": {
-      "__id__": 1326
+      "__id__": 1332
     },
     "_enabled": true,
     "__prefab": null,
@@ -46511,10 +46603,10 @@
     ],
     "guideStepsMaskAreas": [
       {
-        "__id__": 1327
+        "__id__": 1333
       },
       {
-        "__id__": 1339
+        "__id__": 1346
       }
     ],
     "fingerStartNodes": [
@@ -46524,13 +46616,11 @@
     ],
     "fingerTargetNodes": [
       {
-        "__id__": 1336
+        "__id__": 1343
       }
     ],
-    "maskDarkAlpha": 160,
-    "maskLightAlpha": 32,
     "autoStepDelay": 1,
-    "autoStartOnLoad": false,
+    "autoStartOnLoad": true,
     "_id": "3awYNkrGlKB6Iay+D/N9Bq"
   },
   {
@@ -46541,37 +46631,37 @@
     "instance": null,
     "targetOverrides": [
       {
-        "__id__": 1356
+        "__id__": 1363
       },
       {
-        "__id__": 1359
+        "__id__": 1366
       },
       {
-        "__id__": 1362
+        "__id__": 1369
       },
       {
-        "__id__": 1365
+        "__id__": 1372
       },
       {
-        "__id__": 1368
+        "__id__": 1375
       },
       {
-        "__id__": 1371
+        "__id__": 1378
       },
       {
-        "__id__": 1374
+        "__id__": 1381
       },
       {
-        "__id__": 1377
+        "__id__": 1384
       },
       {
-        "__id__": 1380
+        "__id__": 1387
       },
       {
-        "__id__": 1383
+        "__id__": 1390
       },
       {
-        "__id__": 1385
+        "__id__": 1392
       }
     ],
     "nestedPrefabInstanceRoots": [
@@ -46595,7 +46685,7 @@
       "__id__": 345
     },
     "sourceInfo": {
-      "__id__": 1357
+      "__id__": 1364
     },
     "propertyPath": [
       "skillSpriteNode"
@@ -46604,7 +46694,7 @@
       "__id__": 345
     },
     "targetInfo": {
-      "__id__": 1358
+      "__id__": 1365
     }
   },
   {
@@ -46625,7 +46715,7 @@
       "__id__": 345
     },
     "sourceInfo": {
-      "__id__": 1360
+      "__id__": 1367
     },
     "propertyPath": [
       "skillNameNode"
@@ -46634,7 +46724,7 @@
       "__id__": 345
     },
     "targetInfo": {
-      "__id__": 1361
+      "__id__": 1368
     }
   },
   {
@@ -46655,7 +46745,7 @@
       "__id__": 345
     },
     "sourceInfo": {
-      "__id__": 1363
+      "__id__": 1370
     },
     "propertyPath": [
       "skillIntroduceNode"
@@ -46664,7 +46754,7 @@
       "__id__": 345
     },
     "targetInfo": {
-      "__id__": 1364
+      "__id__": 1371
     }
   },
   {
@@ -46685,7 +46775,7 @@
       "__id__": 393
     },
     "sourceInfo": {
-      "__id__": 1366
+      "__id__": 1373
     },
     "propertyPath": [
       "skillSpriteNode"
@@ -46694,7 +46784,7 @@
       "__id__": 393
     },
     "targetInfo": {
-      "__id__": 1367
+      "__id__": 1374
     }
   },
   {
@@ -46715,7 +46805,7 @@
       "__id__": 393
     },
     "sourceInfo": {
-      "__id__": 1369
+      "__id__": 1376
     },
     "propertyPath": [
       "skillNameNode"
@@ -46724,7 +46814,7 @@
       "__id__": 393
     },
     "targetInfo": {
-      "__id__": 1370
+      "__id__": 1377
     }
   },
   {
@@ -46745,7 +46835,7 @@
       "__id__": 393
     },
     "sourceInfo": {
-      "__id__": 1372
+      "__id__": 1379
     },
     "propertyPath": [
       "skillIntroduceNode"
@@ -46754,7 +46844,7 @@
       "__id__": 393
     },
     "targetInfo": {
-      "__id__": 1373
+      "__id__": 1380
     }
   },
   {
@@ -46775,7 +46865,7 @@
       "__id__": 297
     },
     "sourceInfo": {
-      "__id__": 1375
+      "__id__": 1382
     },
     "propertyPath": [
       "skillSpriteNode"
@@ -46784,7 +46874,7 @@
       "__id__": 297
     },
     "targetInfo": {
-      "__id__": 1376
+      "__id__": 1383
     }
   },
   {
@@ -46805,7 +46895,7 @@
       "__id__": 297
     },
     "sourceInfo": {
-      "__id__": 1378
+      "__id__": 1385
     },
     "propertyPath": [
       "skillNameNode"
@@ -46814,7 +46904,7 @@
       "__id__": 297
     },
     "targetInfo": {
-      "__id__": 1379
+      "__id__": 1386
     }
   },
   {
@@ -46835,7 +46925,7 @@
       "__id__": 297
     },
     "sourceInfo": {
-      "__id__": 1381
+      "__id__": 1388
     },
     "propertyPath": [
       "skillIntroduceNode"
@@ -46844,7 +46934,7 @@
       "__id__": 297
     },
     "targetInfo": {
-      "__id__": 1382
+      "__id__": 1389
     }
   },
   {
@@ -46862,7 +46952,7 @@
   {
     "__type__": "cc.TargetOverrideInfo",
     "source": {
-      "__id__": 1354
+      "__id__": 1361
     },
     "sourceInfo": null,
     "propertyPath": [
@@ -46872,7 +46962,7 @@
       "__id__": 1309
     },
     "targetInfo": {
-      "__id__": 1384
+      "__id__": 1391
     }
   },
   {
@@ -46884,7 +46974,7 @@
   {
     "__type__": "cc.TargetOverrideInfo",
     "source": {
-      "__id__": 1354
+      "__id__": 1361
     },
     "sourceInfo": null,
     "propertyPath": [
@@ -46894,7 +46984,7 @@
       "__id__": 1309
     },
     "targetInfo": {
-      "__id__": 1386
+      "__id__": 1393
     }
   },
   {
@@ -46906,28 +46996,28 @@
   {
     "__type__": "cc.SceneGlobals",
     "ambient": {
-      "__id__": 1388
+      "__id__": 1395
     },
     "shadows": {
-      "__id__": 1389
+      "__id__": 1396
     },
     "_skybox": {
-      "__id__": 1390
+      "__id__": 1397
     },
     "fog": {
-      "__id__": 1391
+      "__id__": 1398
     },
     "octree": {
-      "__id__": 1392
+      "__id__": 1399
     },
     "skin": {
-      "__id__": 1393
+      "__id__": 1400
     },
     "lightProbeInfo": {
-      "__id__": 1394
+      "__id__": 1401
     },
     "postSettings": {
-      "__id__": 1395
+      "__id__": 1402
     },
     "bakedWithStationaryMainLight": false,
     "bakedWithHighpLightmap": false

+ 1 - 1
assets/data/backups.meta

@@ -2,7 +2,7 @@
   "ver": "1.2.0",
   "importer": "directory",
   "imported": true,
-  "uuid": "bdca5ef7-41dd-4b59-8aa2-43892d2af75a",
+  "uuid": "6ed06764-1873-47b7-9dd0-2eb678ef4712",
   "files": [],
   "subMetas": {},
   "userData": {}

+ 0 - 9
assets/data/excel/installer_package.meta

@@ -1,9 +0,0 @@
-{
-  "ver": "1.2.0",
-  "importer": "directory",
-  "imported": true,
-  "uuid": "972bf779-ffd5-41be-905c-3f4110e6c50e",
-  "files": [],
-  "subMetas": {},
-  "userData": {}
-}

+ 0 - 17
assets/data/excel/installer_package/requirements.txt

@@ -1,17 +0,0 @@
-# 游戏配置管理工具依赖库
-# Game Configuration Management Tool Dependencies
-
-# Excel文件读写支持
-pandas>=1.3.0
-openpyxl>=3.0.0
-
-# GUI界面支持 (Python内置,无需安装)
-# tkinter - Built-in with Python
-
-# 其他标准库 (Python内置,无需安装)
-# json - Built-in
-# os - Built-in
-# csv - Built-in
-# datetime - Built-in
-# pathlib - Built-in
-# threading - Built-in

+ 0 - 11
assets/data/excel/installer_package/requirements.txt.meta

@@ -1,11 +0,0 @@
-{
-  "ver": "1.0.1",
-  "importer": "text",
-  "imported": true,
-  "uuid": "52479b58-777f-45dc-b055-3168b3848454",
-  "files": [
-    ".json"
-  ],
-  "subMetas": {},
-  "userData": {}
-}

+ 0 - 29
assets/data/excel/installer_package/一键安装依赖.bat

@@ -1,29 +0,0 @@
-@echo off
-chcp 65001 >nul
-echo ========================================
-echo ��Ϸ���ù��������Զ���װ��
-echo ========================================
-echo.
-
-echo ���ڼ��Python����...
-python --version >nul 2>&1
-if errorlevel 1 (
-    echo ����: δ�ҵ�Python����
-    echo ���Ȱ�װPython 3.7����߰汾
-    echo ���ص�ַ: https://python.org
-    echo.
-    pause
-    exit /b 1
-)
-
-echo Python�������ͨ��
-echo.
-
-echo ��ʼ��װ������...
-"��Ϸ���ù���������װ��.exe"
-
-echo.
-echo ��װ��ɣ�
-echo ���ڿ������� "�������ù���.bat" ��ʹ�����ù�������
-echo.
-pause

+ 0 - 12
assets/data/excel/installer_package/一键安装依赖.bat.meta

@@ -1,12 +0,0 @@
-{
-  "ver": "1.0.0",
-  "importer": "*",
-  "imported": true,
-  "uuid": "78c3d3a5-2f9d-4fb5-9e34-aaf274a87712",
-  "files": [
-    ".bat",
-    ".json"
-  ],
-  "subMetas": {},
-  "userData": {}
-}

BIN
assets/data/excel/installer_package/游戏配置工具依赖安装器.exe


+ 0 - 12
assets/data/excel/installer_package/游戏配置工具依赖安装器.exe.meta

@@ -1,12 +0,0 @@
-{
-  "ver": "1.0.0",
-  "importer": "*",
-  "imported": true,
-  "uuid": "77ec78b7-4189-479b-a3d7-f536defd29a9",
-  "files": [
-    ".exe",
-    ".json"
-  ],
-  "subMetas": {},
-  "userData": {}
-}

+ 1 - 1
assets/resources/data/backups/levels.meta

@@ -2,7 +2,7 @@
   "ver": "1.2.0",
   "importer": "directory",
   "imported": true,
-  "uuid": "7d3e1c46-c9bb-4dce-b053-39d4d530f3cf",
+  "uuid": "e97cb9f4-af4c-458e-89c2-240da748a13c",
   "files": [],
   "subMetas": {},
   "userData": {}

+ 3 - 3
assets/scripts/CombatSystem/BlockManager.ts

@@ -285,7 +285,7 @@ export class BlockManager extends Component {
             if (this.guideUIController && this.block1Container) {
                 // 传入步骤索引0,让GuideUIController使用配置的fingerStartNodes和fingerTargetNodes
                 this.guideUIController.createPointingAnimation('guild_1', undefined, 0);
-                this.guideUIController.createHighlightEffect(this.block1Container);
+                void 0;
             }
         }, 0);
     }
@@ -306,7 +306,7 @@ export class BlockManager extends Component {
             if (this.guideUIController && this.block1Container) {
                 // 传入步骤索引0,让GuideUIController使用配置的fingerStartNodes和fingerTargetNodes
                 this.guideUIController.createPointingAnimation('guild_1', undefined, 0);
-                this.guideUIController.createHighlightEffect(this.block1Container);
+                void 0;
             }
         }, 0);
     }
@@ -1322,7 +1322,7 @@ export class BlockManager extends Component {
         // 引导:放置成功后隐藏指引与高亮
         if (this.guideUIController) {
             this.guideUIController.hideAllGuideUI();
-            this.guideUIController.removeHighlightEffect();
+            void 0;
         }
 
         // 新手教程:触发方块放置事件

+ 1 - 1
assets/scripts/Guide.meta

@@ -2,7 +2,7 @@
   "ver": "1.2.0",
   "importer": "directory",
   "imported": true,
-  "uuid": "702fce6b-2ba2-4b79-94ae-14e1584ff043",
+  "uuid": "620e6389-e231-4db1-a225-c533f525ee19",
   "files": [],
   "subMetas": {},
   "userData": {}