問題タブ [skscene]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios7 - オーディオ SKAction を停止するには?
目標: 新しいシーンを提示したい:
新しいバックグラウンド ミュージック (レベル 2 からの新しいバックグラウンド ミュージック) を開始するために、現在のバックグラウンド ミュージックを終了します。
問題: ゲーム全体がいくつかのミニゲームで構成されているため、新しいシーンを提示すると、シーン (レベル 1) のバックグラウンド ミュージックが再生され続け、ミニゲームを終了しても停止しません。
再生される音楽は SKAction です。
次のレベルへの移行は次のようになります。
コメント コード行では、私が既に試したものと機能しなかったものを確認できます。:
絶対に何もしなかった。:
ラインはトランジションのみを停止しますが、音楽はまだ続きます。
私は次のことを試しました: - で弱いまたは強いプロパティを使用しました:
「initWithSize」でSKActionを初期化したので、「withKey」プロパティを使用してアクセスできるように、SKActionへのポインターを保護します。誰かが SKAction はファイア アンド フォーゲット オブジェクトであると書きましたが、それへのポインターを保存しないと後で (直接) アクセスすることはできないと私は理解しました。しかし、それはうまくいきませんでした/私を助けてくれました。
私は他の多くのスタックオーバーフローの投稿を調べましたが、誰も助けてくれなかったり、少なくともこれが起こる理由を教えてくれませんでした:
SKAction playSoundFileNamed はバックグラウンド ミュージックを停止します
永遠に繰り返す SKAction を停止する - スプライト キット
アクションの途中で SKAction を終了することは可能ですか?
・・・感想: SKSceneオブジェクトの作成でアクションが作成されているようです。それに「フック」され、オーディオの長さの後に終了します。repeatForever を使用している間は、停止しませんでした。ただし、一時停止または停止する方法はありません。また、SKAction を SKSpriteNode にフックしてみました。SKScene が読み込まれると、動物が読み込まれます。そのため、SKSpriteNode で SKAction をフックして、SKSpriteNode から removeAllActions などを使用しようとしましたが、うまくいきませんでした。
SKAction、SKView、SKScene、SKSpriteNode のドキュメントを確認しましたが、最終的にはあまり役に立ちませんでした。
アクションを実行しているオブジェクトがどこかに存在するようです。
エラーの内容:
これはシミュレーターまたはデバイス関連のエラーではありません。シミュレーターとデバイスの両方でテストしましたが、同じ結果 (エラー) でした。
これはプロジェクト関連のエラーではありません - 別のプロジェクトでテストしましたが、はるかに小さく、同じ結果 (エラー) でした。
一時的な解決策: AVFoundation フレームワークの AVAudioPlayer クラスを使用しています。私が作成した:
level2 がロードされたときに theBackgroundSong を変更したかったので、これはあまり役に立ちませんでした。ネストされた SKScene 構造からプロパティにアクセスする際に大きな問題がありました。
アドバイス、手がかり、ヒント、またはアイデアは非常に役立ちます。
ios - skscene UIViewController は SKScene から SMS を送信します
ゲームが終了したときに、プレーヤーが SMS でスコアを共有できるようにしようとしています。
フレームワークをプロジェクトにインポートしました。my viewController.h ファイルにインポートされました。
ここに私のviewController.hファイルがあります
また、次のように MyScene.h にインポートしようとしました。
SMS 共有を表示したいときは、MyScene.m ファイルでこのコードを使用します
しかし、この行では
「'MyScene' の目に見える @interface がセレクター 'presentViewController:animated:completion:' を宣言していません」というエラーが表示されます。
過去数時間の検索を試みました。神が他の投稿/チュートリアルからのバリエーションと例をいくつ知っているかを試してみてください(これは、これとは関係のないいくつかのことを学ぶのに適していました). 何もうまくいかないようです。抜こうとする髪がなくなり始めた。だから、どんな助けも素晴らしいでしょう。ここにいるグルの何人かにとって、これは公園を散歩するべきだと確信しています。ありがとう。
編集:ストーリーボード、またはボタン/メニュー/ゲームプレイなどのビューコントローラーを使用していないため、ビューコントローラー自体から関数を呼び出すことができないのはなぜですか。
編集: だから私は Paulw11 が彼のリンクで提案したことを試しました。今、私は次のエラーがあります。
myViewControllerで
「タイプ 'MyScene' のオブジェクトにプロパティ 'MyViewController' が見つかりません」というエラーが表示される
MyScene.m にもあります
[_MyViewController sendSMS]; 「'MyViewController' の可視 @interface がセレクター 'SendSMS' を宣言していません」という行が表示されます。
編集 2: *編集 2: *編集 2: *編集 2: *
SMSを開くためにそれを手に入れました。小さな問題ですが、それを却下/キャンセルすることはできません。
ここに私のsendSMSコードがあります:
これが私の却下コードです:
編集3
次のコードは、正しい時間に NSLog を表示しますが、ウィンドウを閉じません。
ios - 奇妙な EXC_BAD_ACCESS SpriteKit removeSubsprite クラッシュ
私はSpriteKit
初めてで、最初のゲームを作成したばかりです。iOS 7.1 まではすべて問題なく動作していました。現在、新しいレベルに進んで新しい を提示することを数回行った後、Scene
クラッシュします。私はそれを間違った方法で提示しているとは思わない:
エラーがEXC_BAD_ACCESS
発生し、で発生しているように見えますがremoveSubsprite
、サブスプライトを削除するコードのどこにも見つかりません。
これは、iOS 7.1 SDK に更新したときに開始されたように見えるあいまいなエラーであるため、他にどのような情報を提供すればよいかわかりません。
ios - SpriteKit シーンを完全にアンロードする方法
ゲームで再試行ボタンを押したときに、MainScene をリロードするようにします。私はこれをやっています:
ただし、これにより、再試行するたびにメモリ/CPU 使用率が (大幅に) 増加します。約 10 ~ 20 回の再試行の後、顕著な遅延が発生します。
すべての SKEmitterNode と SKSpriteNode を静的にして、メモリの問題を修正したので、スプライト、エミッタなどがメモリから解放されず、再試行するたびに再ロードされて、2 倍になっていると思われます。
次のようにスプライト/エミッターをロードしています。
スプライトのロードまたは再試行が間違っていますか?
ios - MenuScene の SKNode ボタンからリーダーボードを呼び出す方法
次の警告が表示されました。
タイプ「uiviewcontroller」のパラメーターに「MenuScene」を送信する互換性のないポインタータイプ
メニュー シーンのこのボタンをクリックして、Game Center からリーダーボードを呼び出したいと思います。
この最後の車線で、私は警告を受けました
sprite-kit - シーン遷移の前に AVPlayer を使用して SKVideoNode をプリロールしますか?
をシーンに付けて使用してAVPlayer
います。SKVideoNode
それはそのための唯一のノードですSKScene
。SKSpriteNode
さまざまなノードがロードされた一連の他のシーンと混ざり合ったビデオを再生しています。
トランジションAVPlayer
中にビデオが表示される直前 (またはその時点) にビデオの再生が開始されるように、をプリロールしたいと考えています。SKScene
それでも、黒いフラッシュが介在しないとそうすることができないようです.
ビデオを含むシーンが消えたら、それをリセットします (AVPlayer オブジェクトをSKVideoNode
のユーザー辞書に入れます)。これはうまくいくようです:
ビデオを含むシーンが表示されようとしているときに、次のようにします。
それから...
これは、ビデオの前に短時間の黒で開始しないと機能しません。
誰でもこれで成功しましたか?
SKScene
上のすべてのコンテンツがその移行中に一時停止されているのではないかと、私は忘れられない疑いを持っており、それを回避する方法はありません. 現在のシーンのすべてのノードをトランジションして、その現在のシーンを維持し、そのSKVideoNode
上に新しいノードをトランジションすることは別として。
ios - SKScene を閉じた後もメモリが高いままです
dispatch_once NSObjectを使用してデータ ポインターを作成します。そのため、すべてのゲーム アセット ポインターは、メイン ビューコントローラーが表示されるときに作成されます。ゲームをプレイするために、ユーザーはUIViewControllerの特定のレベルに対応するUIButtonをタップします。これを LevelSelectionController と呼びましょう。ゲームが終了すると、ユーザーはラベル ( SKLabel ) をタップします。すべてのアクションとノードが削除されます。
さらに、特定のレベルのSKSceneサブクラスは、次のように、ユーザーを LevelSelectionController に戻すタスクを、ゲームSKViewを提示するビュー コントローラーに委任します。
私が持っている唯一の問題は、ユーザーがゲーム シーン (SKScene) を離れてもメモリが高いままであることです。ゲームには多くのアセットが必要です。そのため、ゲームを開始すると、メモリ使用量が 200 MB に跳ね上がります。ユーザーが元のレベル選択ビュー コントローラーに戻ったとき、アクティビティ モニターによると、ゲーム シミュレーターはまだ 200 MB を消費しています。ユーザーが別のレベルに入ると、メモリ使用量がさらに 10 MB 跳ね上がります。では、ユーザーが SKScene を離れたら、最後のゲームのメモリを解放するにはどうすればよいでしょうか?
ARCを使用しています。Xcode のバージョンは 5.1 です。開発対象はiOS 7.1です。
ご協力ありがとうございました。
-- 編集 1 --
私はばかだ。私は問題が何であるかを知っています。シーンを閉じると、新しい SKView が作成され、それを nil に設定して現在のシーンから抜け出します。できます。しかし、それはそれを行う方法であってはなりません。代わりに、現在の SKView を表示する前に変数に設定する必要があります。シーンを閉じるときに、その変数を nil に設定する必要があります。うーん...私は考えていませんでした。
-- 編集 2 -- 現在のシーンが nil で表示されている場合、ほとんど変化はありません。removeFromSuperview から削除しても、あまり効果はありません。
ios - Objective-C の別のビューでローカル変数を共有する方法
今はカジュアルゲームを作っています。
ツイッターでスコアを共有したいと思います。
私のこの作品のイメージは以下です。
1.ゲームプレイヤーがゲームをプレイした後、スコアがあります。
2.gameoversceneになったらtwitterボタンを押す(social.framework使用)
3.「You got xx score!!」のようなテキスト twitterdisplay(モーダル)で。
※xxを共有スコアに変更したいです。
そのためのアドバイスをください。私はObjective-Cの初心者です。だから、簡単な方法が私にとっては良いです。少しずつですが、セキュリティとスケーラビリティに気を配っていきたいと思います。
【ご案内】 ※MainScene、GameOverSceneはSKSceneから作成
MainScene.m
GameOverScene.m
ViewController.m
ios - sksceneの問題で一時停止/再生
私が取り組んでいるデモ ゲームがあり、シーンに一時停止再生機能を実装しました。どちらの機能も正常に動作します。一時停止すると、すべてのアクションが停止し、1 つのアクションを除いて再生が再開されます。タッチで一時停止/再生機能を実装する方法は次のとおりです。
現在の時刻が考慮され、一時停止アクションが適切に機能するように、更新メソッドで時刻も更新します。
そして、ここにゾンビアクションメソッドがあります:
このメソッドで私が持っている唯一の問題は、(前述のように) 再生ボタンを押した後にゾンビを移動する呼び出しが[self moveZombieToward:touchLocation];
機能しないため、再生ボタンを押した後、キャラクターを移動できなくなることです。他のアニメーションは問題なく動作しますが、キャラクターはタッチしても動かなくなります。私が間違っていることを理解するのを手伝ってくれる人はいますか?