質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SpriteBuilder

SpriteBuilderとは、主にiOSの2Dゲームの作成に利用される、Cocos2dのUIデザインをGUI操作を利用して簡単に作成できるツールです。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

2797閲覧

Swiftでサウンドのオンオフをしたい

daigakusei

総合スコア18

SpriteBuilder

SpriteBuilderとは、主にiOSの2Dゲームの作成に利用される、Cocos2dのUIデザインをGUI操作を利用して簡単に作成できるツールです。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2015/12/02 10:43

現在SwiftでiPhone用のゲームアプリを開発しているのですが、BGMと効果音のオン、オフ切り替えをシーンを切り替えた時も適用されるようにAppDelegateに保存してそれを別のシーンで呼び出したいのですが、やり方がわかりません。どなたか教えてください。宜しくお願いしますm(_ _)m
ちなみに、CocoaPodsを使用して作成しているので、AppDelegate.hとAppDelegate.mが存在しており、MainScene.swiftでBGMのオン、オフをBool型で切り替えしています。しかし、TitleScene.swiftに画面を遷移させるとサウンドのオンオフは当然値がリセットされてしまうのでどうにかAppDelegateに保存してそこから呼び出したいです。

AppDelegate.h内で

@interface AppController : CCAppDelegate
{
NSUserDefaults *bgmSwitching; // BGMのON, OFF切り替え
}

と記述して、AppDelegate.m内で

bgmSwitching = [NSUserDefaults standardUserDefaults]; // bgmSwitchingの取得

と記述した後に、MainScene.swift内でimport "AppDelegate.h"を一番上につけようとしてもExpected identifier in import declarationのエラーでそのようなことができませんでした。
ちなみに音は以下の記述で鳴らしています。

let audio:OALSimpleAudio = OALSimpleAudio.sharedInstance() // 音を出せるようにする

以下の記述はボタンを押した時です。

self.audio.playEffect("StageSelect.mp3") // タッチ時の音再生
audio.playBg("TitleBGM.mp3", loop: true) // BGMをループ

タスク削除しても再びアプリを起動するとオン、オフの設定が残っているようにしたいので永続保存、呼び出をどなたか教えてくださいm(_ _)m

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

swiftで書いているのかObjective-cで書いているのか両方使っているのかよくわかりませんが、とりあえず1つ言えることは、NSUserDefaults をAppDelegateに持たせる必要はありません。

Swiftの場合

Swift

1//設定を保存する 2 let UD = NSUserDefaults.standardUserDefaults() 3 UD.setBool(true, forKey: "BGMSwitching") 4-----------別クラス------------ 5//設定を取り出す 6 let UD = NSUserDefaults.standardUserDefaults() 7 let bgmSwitching = UD.boolForKey("BGMSwitching")

Objective-Cの場合

Objective

1//設定を保存する 2 NSUserDefaults* UD = [NSUserDefaults standardUserDefaults]; 3 [UD setBool:YES forKey:@"BGMSwitching"]; 4-----------別クラス------------ 5//設定を取り出す 6 NSUserDefaults* UD = [NSUserDefaults standardUserDefaults]; 7 BOOL bgmSwitching = [UD boolForKey:"BGMSwitching"];

NSUserDefaults standardUserDefaults はアプリ内に一つしかなくどこでも呼び出せるので、AppDelegate に持たせなくてもどこでも使えます。
あとは、保存したいところで保存して、使いたいところで使いましょう。

投稿2015/12/02 15:13

domonr

総合スコア263

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

daigakusei

2015/12/03 15:39

ありがとうございます!!おかげでうまくやれました(^^) AppDelegate内に入れてそこから持ち出す必要はなかったんですね!勘違いしておりました。丁寧に教えてくださりありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問