如何在第二个场景中获取第一个场景的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
相关产品推荐
相关产品推荐

