這一篇文章主要是想分享 Unity的場景切換,那切換到不同的場景,要怎麼樣使用上一個場景所帶來的資料。
SongSelect Scene

按下Start按鈕開始,要把資料帶到下一個遊戲頁面。

MusicData.cs
1using System.Collections;2using System.Collections.Generic;3using UnityEngine;4
5[CreateAssetMenu(fileName = "MusicData", menuName = "Rhythm/MusicData")]6public class MusicData : ScriptableObject7{8 public string musicName;9 public string author;10 public AudioClip audioClip;11 public Sprite coverImage;12 public int bpm;13 public float length;14}1using System.Collections;2using System.Collections.Generic;3using UnityEngine;4
5[CreateAssetMenu(fileName = "MusicData", menuName = "Rhythm/MusicData")]6public class MusicData : ScriptableObject7{8 public string musicName;9 public string author;10 public AudioClip audioClip;11 public Sprite coverImage;12 public int bpm;13 public float length;14}SongDetailUI.cs
1using UnityEngine;2using UnityEngine.UI;3using UnityEngine.SceneManagement;4
5public class SongDetailUI : MonoBehaviour6{7 public Image coverImage;8 public TMPro.TextMeshProUGUI titleText;9 public TMPro.TextMeshProUGUI artistText;10 public TMPro.TextMeshProUGUI infoText;11 private MusicData current;12
13 public void ShowMusic(MusicData music)14 {15 current = music;16 // 將音樂資料帶入右邊的detail UI17 coverImage.sprite = music.coverImage;18 titleText.text = music.musicName;19 artistText.text = music.author;20 infoText.text = $"BPM: {music.bpm} Length: {music.length}";21 }22
23 public void Btn_Play() {24 if (current == null) {25 Debug.LogError("沒有選擇歌曲,無法開始遊戲");26 return;27 }28 // 將音樂存到GameData29 GameData.selectedMusic = current;30 SceneManager.LoadScene("GameScene");31 }32}1using UnityEngine;2using UnityEngine.UI;3using UnityEngine.SceneManagement;4
5public class SongDetailUI : MonoBehaviour6{7 public Image coverImage;8 public TMPro.TextMeshProUGUI titleText;9 public TMPro.TextMeshProUGUI artistText;10 public TMPro.TextMeshProUGUI infoText;11 private MusicData current;12
13 public void ShowMusic(MusicData music)14 {15 current = music;16 // 將音樂資料帶入右邊的detail UI17 coverImage.sprite = music.coverImage;18 titleText.text = music.musicName;19 artistText.text = music.author;20 infoText.text = $"BPM: {music.bpm} Length: {music.length}";21 }22
23 public void Btn_Play() {24 if (current == null) {25 Debug.LogError("沒有選擇歌曲,無法開始遊戲");26 return;27 }28 // 將音樂存到GameData29 GameData.selectedMusic = current;30 SceneManager.LoadScene("GameScene");31 }32}Button 觸發轉場
在Start按鈕定義的事件
1```2public void Btn_Play() {3 if (current == null) {4 Debug.LogError("沒有選擇歌曲,無法開始遊戲");5 return;6 }7 // 將音樂存到GameData8 GameData.selectedMusic = current;9 SceneManager.LoadScene("GameScene");10}1public void Btn_Play() {2 if (current == null) {3 Debug.LogError("沒有選擇歌曲,無法開始遊戲");4 return;5 }6 // 將音樂存到GameData7 GameData.selectedMusic = current;8 SceneManager.LoadScene("GameScene");9}1在另外一個遊戲場景,已經可以聽到點擊的對應的資料音樂。2
3透過 MusicData music = GameData.selectedMusic; 抓取剛剛的音樂。using System.Collections; using System.Collections.Generic; using UnityEngine;
public class GameMusicPlayer : MonoBehaviour
{
private void Start() {
MusicData music = GameData.selectedMusic;
if (music == null) {
Debug.LogError(“沒有選擇歌曲,無法開始遊戲”);
return;
}
// 抓到全域的AudioSource
AudioSource audio = GetComponent
1 Debug.Log("開始播放:" + music.musicName);2}}
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class GameMusicPlayer : MonoBehaviour
{
private void Start() {
MusicData music = GameData.selectedMusic;
if (music == null) {
Debug.LogError(“沒有選擇歌曲,無法開始遊戲”);
return;
}
// 抓到全域的AudioSource
AudioSource audio = GetComponent
1 Debug.Log("開始播放:" + music.musicName);2}}
1成功取得音樂2
34
5以上就是轉場還有資料怎麼使用的一個概略展示。部分資訊可能已經過時