えびはえびや

プログラミング初心者の備忘録とかです

Unity上の確認テストでは音が鳴るのに実機テストでは鳴らない

タイトルの通りのことが発生しました。
Androidでの実行時に出ているエラーが以下のとおり。

PlayOneShot was called with a null Audio Clip.

音源のクリップはスクリプトにアタッチしているし、実際に確認では音が出ているのにnullとは・・・?

解決方法:一番最初に呼び出されるAudio Sourceオブジェクトにアタッチする。

実は、各シーンで使用しているAudio Sourceに対して、DontDestroyOnLoad()を使っていました。
シーンが変わってもBGMが変わってほしくなかったので、、、
なので、一番最初に呼び出されるシーンのAudio Sourceがオブジェクトとしてずっと採用(?)されており、
他のシーンのAudio Sourceに追加したクリップなど知らない、という状態だったのだと思います。

よくわからないまま、各シーンでAudio Sourceをヒエラルキーに置いてクリップを追加していたけど、
ずっとオブジェクトが残っているならこれも必要ないのか???
DontDestroyOnLoad()の仕様がよくわかっていないため起こってしまった不具合でした。

Spriteが奥側に配置されてしまう

Spriteが裏側に回ってしまう現象に悩まされました。

配置は、
Canvas
 ◯◯Panel
 ✕✕Panel
 itemPanel(あずきいろのパネル)
  itemBox(後ろにある箱の画像Sprite)
という感じにしていて、Panelは表にくるのに画像だけなぜか裏に回ってしまいました。
Canvas内のSort orderは、ヒエラルキー内の降順でレイヤー下から表示されるとのことだったので、
ヒエラルキーCanvas内の一番下に配置しても変わらず。
画像のPos Zも0にしていて問題なし。

→とりあえず、Imageオブジェクトを追加して、そのソースに箱の画像を指定することで表に表示することができました。

うーん。。。
Assetにある画像をそのままドラッグ&ドロップでSceneに追加すれば普通に表示される認識でしたがなにか違ったのか。。。
わざわざImageに入れないといけない理由があったのかな?
パネルにSpriteを乗っけるやり方がよくないのか?
よくわからない、、、いつかわかるといいな。

ボタンが押せない

Unityでボタンが押せなくなったので備忘録。

作業工程として、Scene1のボタンオブジェクトをプレハブ化し、
Scene2にそのプレハブを挿入した。
スクリプトなどをアタッチしてプレイしてみても、押せない!反応しない!
スクリプトの内容はScene1と同じにしているのにどうして!

→EventSystemオブジェクトが足りていないため。。。
よくわかっていないけど、ボタン押下などのイベントのために必要なオブジェクトらしい。
UIからボタン等追加すれば自動で作成されるオブジェクトだが、
プレハブ化したボタンをSceneにドラッグ&ドロップしただけでは作られないのであった。

Scene1のEventSystemをコピペすることで解決。
もはや、EventSystemをプレハブ化してScene作成時に挿入するようにしたほうがいい気がする。

だいぶご無沙汰、、、

Android studioの開発はひとまず休止して、
Unityでゲームを作っております!
本を見ながら作っているけどこちらもなかなかエラーが出ますね。
出たエラーと解決策についても記載していきたいと思います。

GitHubを使い始めた

GitHubをやっと使い始めました!
職場では似たようなバージョン管理システムを使っていたのですが、
自分が作るささやかなアプリで導入する必要性が感じられず・・・

ただ、割りといいできのソースをがらっと変えようとしたことがあって、
そのときに前のバージョンを残せておけばいいなと思ったのでした。

ちなみにGitHubにアカウント登録して、GitHub Desktopというデスクトップアプリを使っています。
desktop.github.com

スタイリッシュでよいです😄

職場では「Tortoise Git」というデスクトップアプリを使っています。
使用感が一昔前な感じなので今回は見送りました、、、
AndroidStudioとGitHubを連携したらかなり使いやすそうな感じになったので、大丈夫そうです。
バージョン管理は未だにあまり理解できていないのですが、少しずつ理解を深められるといいなと思います。

Could not find android.arch.navigation:navigation-fragment-ktx:2.5.3.

アプリビルド時に以下のエラーが発生。
文を読む限り、gradleファイルに記載しているバージョン番号が見つからないよということらしい・・・

Could not find android.arch.navigation:navigation-fragment-ktx:2.5.3.
Required by:
project :app
Search in build.gradle files

とりあえず最新版を適用すればいいかと思い「android.arch.navigation:navigation-fragment-ktx」でググって出てくるページで案内されたバージョン番号に書き換たが直らず。
上記の例だと、下記サイトに記載してある「2.5.3」を使用する感じ。
developer.android.com

調べてみると、「android.arch.navigation」を使用しようとしているかららしい。
これを「androidx.navigation」に書き換える必要があるとのこと。

implementation "androidx.navigation:navigation-fragment-ktx:2.5.3"
implementation "androidx.navigation:navigation-ui-ktx:2.5.3"

これでsyncしたらうまくいきました。
しかしAndroid公式のチュートリアルのソースを使っているんですが、古いまま整備されてないのかな、、、

はてなブログにソースを貼り付ける

はてなブログでソースを書くときのやりかたメモ

①編集方法を「はてな記法」にする

ソースコードを挿入し、「>||」「||<」タグで囲む

③開始タグの棒の間に言語名を入れるとその言語に応じてコードに色をつけてくれる
 指定できる言語タイプは以下を参照
 
ソースコードを色付けして表示する(シンタックスハイライト) - はてなブログ ヘルプ


class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_main)
    }
}


OKかな?

以下のサイトを参考にデザインをカスタマイズさせていただきました。
ありがとうございます!
codelife.cafe