You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在第二个场景中获取第一个场景的difficulty变量?

跨场景获取difficulty变量的几种实现方案

一、Unity 场景传值方案

1. 全局单例管理器

创建一个不随场景销毁的单例脚本,统一存储全局变量:

public class GameManager : MonoBehaviour
{
    public static GameManager Instance;
    public int difficulty;

    void Awake()
    {
        if (Instance == null)
        {
            Instance = this;
            DontDestroyOnLoad(gameObject);
        }
        else
        {
            Destroy(gameObject);
        }
    }
}
  • 第一个场景赋值:GameManager.Instance.difficulty = 2;
  • 第二个场景取值:int currentDiff = GameManager.Instance.difficulty;

2. PlayerPrefs 持久化存储

适合需要保留设置(重启游戏仍能读取)的场景:

// 第一个场景存值
PlayerPrefs.SetInt("Difficulty", difficultyValue);
PlayerPrefs.Save();

// 第二个场景取值
int difficulty = PlayerPrefs.GetInt("Difficulty", 1); // 1为默认值

二、前端路由场景(Vue/React)传值方案

Vue 场景

路由参数传递

通过路由query参数携带变量:

// 第一个页面跳转
this.$router.push({
  path: '/second-scene',
  query: { difficulty: this.difficulty }
})

// 第二个页面获取
mounted() {
  this.currentDifficulty = this.$route.query.difficulty
}

Pinia/Vuex 全局状态管理

用全局状态库统一管理变量:

// Pinia 示例 store
import { defineStore } from 'pinia'
export const useGameStore = defineStore('game', {
  state: () => ({
    difficulty: 1
  }),
  actions: {
    setDifficulty(val) {
      this.difficulty = val
    }
  }
})

// 第一个页面设置
const gameStore = useGameStore()
gameStore.setDifficulty(3)

// 第二个页面获取
const gameStore = useGameStore()
const currentDiff = gameStore.difficulty

React 场景

路由参数传递

通过React Router的查询参数传递:

// 第一个页面跳转
import { useNavigate } from 'react-router-dom'
const navigate = useNavigate()
navigate(`/second-scene?difficulty=${difficulty}`)

// 第二个页面获取
import { useSearchParams } from 'react-router-dom'
const [searchParams] = useSearchParams()
const difficulty = searchParams.get('difficulty')

Context API 全局状态共享

用Context实现跨组件/页面状态共享:

// 创建GameContext
import { createContext, useContext, useState } from 'react'
const GameContext = createContext()

export function GameProvider({ children }) {
  const [difficulty, setDifficulty] = useState(1)
  return (
    <GameContext.Provider value={{ difficulty, setDifficulty }}>
      {children}
    </GameContext.Provider>
  )
}

// 第一个页面设置
const { setDifficulty } = useContext(GameContext)
setDifficulty(2)

// 第二个页面获取
const { difficulty } = useContext(GameContext)

三、原生环境通用方案

无框架的原生JS/桌面应用,可直接用全局对象存储:

// 第一个场景赋值
window.gameDifficulty = 3;

// 第二个场景获取
const difficulty = window.gameDifficulty;

内容的提问来源于stack exchange,提问作者Stelbert Stylton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 00:47:13