|
|
@@ -1,4 +1,4 @@
|
|
|
-import { _decorator, Component, Node, Button, Label, find, UITransform, Sprite, Color, Prefab, instantiate, Vec3 } from 'cc';
|
|
|
+import { _decorator, Component, Node, Button, Label, find } from 'cc';
|
|
|
import { LevelSessionManager } from '../../Core/LevelSessionManager';
|
|
|
import { BallController } from '../BallController';
|
|
|
import { BlockManager } from '../BlockManager';
|
|
|
@@ -36,11 +36,12 @@ export class GameBlockSelection extends Component {
|
|
|
})
|
|
|
public coinLabelNode: Node = null;
|
|
|
|
|
|
- @property({
|
|
|
- type: Prefab,
|
|
|
- tooltip: '拖拽Toast预制体到这里'
|
|
|
- })
|
|
|
- public toastPrefab: Prefab = null;
|
|
|
+ // 移除toastNode属性,改用事件机制
|
|
|
+ // @property({
|
|
|
+ // type: Node,
|
|
|
+ // tooltip: '拖拽Canvas/Toast节点到这里'
|
|
|
+ // })
|
|
|
+ // public toastNode: Node = null;
|
|
|
|
|
|
@property({
|
|
|
type: Node,
|
|
|
@@ -394,36 +395,12 @@ export class GameBlockSelection extends Component {
|
|
|
|
|
|
// 显示金币不足UI
|
|
|
private showInsufficientCoinsUI() {
|
|
|
- if (!this.toastPrefab) {
|
|
|
- console.error('Toast预制体未绑定,请在Inspector中拖拽Toast预制体');
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- // 实例化Toast预制体
|
|
|
- const toastNode = instantiate(this.toastPrefab);
|
|
|
+ // 使用事件机制显示Toast
|
|
|
+ EventBus.getInstance().emit(GameEvents.SHOW_TOAST, {
|
|
|
+ message: '金币不足!',
|
|
|
+ duration: 3.0
|
|
|
+ });
|
|
|
|
|
|
- // 设置Toast的文本为"金币不足!"
|
|
|
- const labelNode = toastNode.getChildByName('label');
|
|
|
- if (labelNode) {
|
|
|
- const label = labelNode.getComponent(Label);
|
|
|
- if (label) {
|
|
|
- label.string = '金币不足!';
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 将Toast添加到Canvas下
|
|
|
- const canvas = find('Canvas');
|
|
|
- if (canvas) {
|
|
|
- canvas.addChild(toastNode);
|
|
|
- }
|
|
|
-
|
|
|
- // 3秒后自动销毁Toast
|
|
|
- this.scheduleOnce(() => {
|
|
|
- if (toastNode && toastNode.isValid) {
|
|
|
- toastNode.destroy();
|
|
|
- }
|
|
|
- }, 3.0);
|
|
|
-
|
|
|
console.log('金币不足!');
|
|
|
}
|
|
|
|
|
|
@@ -497,50 +474,14 @@ export class GameBlockSelection extends Component {
|
|
|
|
|
|
// 显示没有上阵方块的Toast提示
|
|
|
private showNoPlacedBlocksToast() {
|
|
|
- console.log('[GameBlockSelection] 开始显示Toast提示');
|
|
|
+ console.log('[GameBlockSelection] 显示未上阵植物提示');
|
|
|
|
|
|
- if (!this.toastPrefab) {
|
|
|
- console.error('[GameBlockSelection] Toast预制体未绑定,请在Inspector中拖拽Toast预制体');
|
|
|
- return;
|
|
|
- }
|
|
|
- console.log('[GameBlockSelection] Toast预制体已绑定');
|
|
|
-
|
|
|
- // 实例化Toast预制体
|
|
|
- const toastNode = instantiate(this.toastPrefab);
|
|
|
- console.log('[GameBlockSelection] Toast节点已实例化:', toastNode.name);
|
|
|
-
|
|
|
- // 设置Toast的文本为"请至少上阵一个植物!"
|
|
|
- const labelNode = toastNode.getChildByName('label');
|
|
|
- console.log('[GameBlockSelection] 查找label子节点:', !!labelNode);
|
|
|
- if (labelNode) {
|
|
|
- const label = labelNode.getComponent(Label);
|
|
|
- console.log('[GameBlockSelection] 获取Label组件:', !!label);
|
|
|
- if (label) {
|
|
|
- label.string = '请至少上阵一个植物!';
|
|
|
- } else {
|
|
|
- console.error('[GameBlockSelection] label节点没有Label组件');
|
|
|
- }
|
|
|
- } else {
|
|
|
- console.error('[GameBlockSelection] 找不到名为"label"的子节点');
|
|
|
- }
|
|
|
+ // 使用事件机制显示Toast
|
|
|
+ EventBus.getInstance().emit(GameEvents.SHOW_TOAST, {
|
|
|
+ message: '请至少上阵一个植物!',
|
|
|
+ duration: 3.0
|
|
|
+ });
|
|
|
|
|
|
- // 将Toast添加到Canvas下
|
|
|
- const canvas = find('Canvas');
|
|
|
- if (canvas) {
|
|
|
- canvas.addChild(toastNode);
|
|
|
- } else {
|
|
|
- console.error('[GameBlockSelection] 找不到Canvas节点');
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- // 3秒后自动销毁Toast
|
|
|
- this.scheduleOnce(() => {
|
|
|
- if (toastNode && toastNode.isValid) {
|
|
|
- toastNode.destroy();
|
|
|
- } else {
|
|
|
- console.warn('[GameBlockSelection] Toast节点无效,无法销毁');
|
|
|
- }
|
|
|
- }, 3.0);
|
|
|
console.log('[GameBlockSelection] 请至少上阵一个植物!');
|
|
|
}
|
|
|
|