堕天使の煉獄
2014-03
06
06:25:54
まだ画面にはなんにも
相変わらずunity弄り中。
そんで、まだまだ画面にはボタンがいくつかあるだけですw
昨日は音楽関係のテストをば。
うーん。
なんというか、unityの開発環境の中では
音楽の機能って結構軽視されてる部類ぽ?
ゲーム開発用をうたってる割には
BGMのイントロ以降のみのループ再生機能がなかったり
フェードイン、フェードアウト辺りも標準機能として無かったり。
ほかには
再生中にStop()メソッドで停止させると、ぶつっとノイズが入る。
この場合、ごく短時間のフェードアウトをいれて
ノイズが気にならないようにするなんてのは、
かなり初歩的な事項というか、定石? なので
Stop()メソッドの中に標準的な動作として
含めておいても良いぐらいの機能なんじゃないのかな? とかおもたり。
んで、フェードインフェードアウトだけども、
なにげにc++にはない機能である、コルーチンが大変に便利。
なので、実装自体は大変簡単かつスマートにできるのだけども。
もともとunityの作法的に(?)、オブジェクトの開放の時に、
引数で遅延時間を指定するというスタイルがあるのですが。
GameObject.DestroyObject(gameObject,0.1f);
こうかくと、上のコードが実行された0.1秒後に実際の削除が起こると。
なので音楽の停止なんかは
bgm.Stop(1.5f);
何て書くと、1.5秒かけてフェードアウト
なんてのが標準であってもええんでないかいとかおもたり。
てか実際に自前で書く場合も、こんな感じで終了時間を引数にもつ関数でラップして
内部でコルーチンで処理する感じにしてみましたが。
このぐらいの基本機能は標準であって欲しいところ。
イントロ付きBGMのループが出来ないのもかなりアレですよね。
この辺で、あんましunityは音楽関係は軽視されてるなーという印象。
なにげに実現するにはイントロ部分とループ部分の二つに音声ファイルを分けて
再生開始時間を遅延して開始する関数を使って実現するらしい。
bgm1_intor.Play(); //イントロは五秒
bgm1.PlayDelayed(5.0f);
と書くと、最初にbgm1_intorが再生され
5秒後に自動的にbgm1が再生されるそうな。
うむう。
イントロ中に再生中止とかのイベントが起きた場合とか
めんどくさそうだなコレ。
曲が一曲につき2ファイルいるのも気持ち悪いし。
秒数じゃなくてサンプル数指定もある見たいですが
わりと最近? からこの秒で指定する方が増えてそっち推奨みたいなことが
マニュアルには書かれているのですが。
普通にランダムシークつけれないのは、なにか理由でもあるのだろうか。
マルチプラットフォームまわりの不具合なのだろうか。
PC@DirectX環境なんかの場合だと
再生用プロセスを監視して指定された位置に来たらなんかする。
みたいなのが別スレッドで動いてたりするのですが
その辺の監視が他のいろんな環境では実現出来ないので
最初の再生開始時間をずらすだけ、という仕様になっているのかな……。
んで音楽関係とは別に、
こっちはもっと大事な部分。
バイナリの読み書き関係。
unity的には、たとえば2Dアクションゲームの場合
マップデータというのは、シーンとして
unity上でマウスでぐりぐり配置して作るのが普通? のようですが
やはり昔ながらのバイナリでつくったマップデータを読み込んで
作る方が色々と便利なんですよね。
この場合のマップデータというのは、
マップ内のオブジェクト(床とか)の配置情報ですね。
マップオブジェクト自体はプレハブとしてunity無いに全部用意しといて
マップデータを元に動的にプレハブのインスタンスを作成して
配置するという流れでしょうか。
なにげに微妙に今までの慣れた方法と違うなとおもうのが
基本的にこの方法のメリットとしては
c++などで作ったときの場合
プログラム本体をリビルドすることなく
マップデータを改変するだけで変更が適用される。
というのがあるのですが。
unityの場合はちょっとやり方が変った感じになるぽ。
(上記の方法でもできるっちゃ出来るみたいですが)
unityの場合、GameObjectにTextAssetというデータメンバが用意されていて
(Textとあるけど、バイナリでもOk)
バイナリ形式のファイルを普通にAssetに登録して
GameObject自体にそのファイルを登録する事が出来る模様。
c++の場合と違って
最初からプログラムで使う部品として登録しておけるのが
メリットといえばメリットでしょうか。
c++の場合は、自分で作ったフォルダなどを
この中身はこういう物が入っていると「見なし」て
そういうローカルルール的な前提を規定してる感じだったのが
unityの場合はその辺が判りやすい感じでまとめられると。
んでもなにげにC#て、c++の構造体的なものが無い?
マップファイルを例にあげると
先頭にはヘッダ部分を作るのが普通だとおもうのですが
c++なら、ヘッダ用の構造体を用意して
その構造体分のサイズをファイルから一気に読み込んで~
ってやったりします。
が、C#だとこういうのが出来ないっぽい。
ヘッダ部分を順番にバイナリでデータ長もしくは型を指定して
順次読み込むような方法しかないのかな??
なんかその辺で、メモリ管理周りとかでも
結構独自の仕様があるようで、ちょっとめんどくさそう。
もう一つは、画像ファイルなどの暗号化についても
この辺が必要になるのですが。
いまいちググってみても、あんましいい感じの情報がでてこなーい。
んまあ、当面はまだまだ必要ない部分かもですけども。
最初からunityのエディタ上で登録するよりも
スクリプトから登録する形を基本にした方が良いのかなぁ。
登録時に暗号のデコード処理付きに置き換えたりするのが楽なので。
んでもそれだとunity使う利点が薄れるような。
DXライブラリのDXアーカイブみたいな
最終的にリソースファイルをパッケージする機能とかないのかな?
ふむう。
そんな感じで、いまだにゲーム画面らしい画面を出すところまで
行ってないですw
そんで、まだまだ画面にはボタンがいくつかあるだけですw
昨日は音楽関係のテストをば。
うーん。
なんというか、unityの開発環境の中では
音楽の機能って結構軽視されてる部類ぽ?
ゲーム開発用をうたってる割には
BGMのイントロ以降のみのループ再生機能がなかったり
フェードイン、フェードアウト辺りも標準機能として無かったり。
ほかには
再生中にStop()メソッドで停止させると、ぶつっとノイズが入る。
この場合、ごく短時間のフェードアウトをいれて
ノイズが気にならないようにするなんてのは、
かなり初歩的な事項というか、定石? なので
Stop()メソッドの中に標準的な動作として
含めておいても良いぐらいの機能なんじゃないのかな? とかおもたり。
んで、フェードインフェードアウトだけども、
なにげにc++にはない機能である、コルーチンが大変に便利。
なので、実装自体は大変簡単かつスマートにできるのだけども。
もともとunityの作法的に(?)、オブジェクトの開放の時に、
引数で遅延時間を指定するというスタイルがあるのですが。
GameObject.DestroyObject(gameObject,0.1f);
こうかくと、上のコードが実行された0.1秒後に実際の削除が起こると。
なので音楽の停止なんかは
bgm.Stop(1.5f);
何て書くと、1.5秒かけてフェードアウト
なんてのが標準であってもええんでないかいとかおもたり。
てか実際に自前で書く場合も、こんな感じで終了時間を引数にもつ関数でラップして
内部でコルーチンで処理する感じにしてみましたが。
このぐらいの基本機能は標準であって欲しいところ。
イントロ付きBGMのループが出来ないのもかなりアレですよね。
この辺で、あんましunityは音楽関係は軽視されてるなーという印象。
なにげに実現するにはイントロ部分とループ部分の二つに音声ファイルを分けて
再生開始時間を遅延して開始する関数を使って実現するらしい。
bgm1_intor.Play(); //イントロは五秒
bgm1.PlayDelayed(5.0f);
と書くと、最初にbgm1_intorが再生され
5秒後に自動的にbgm1が再生されるそうな。
うむう。
イントロ中に再生中止とかのイベントが起きた場合とか
めんどくさそうだなコレ。
曲が一曲につき2ファイルいるのも気持ち悪いし。
秒数じゃなくてサンプル数指定もある見たいですが
わりと最近? からこの秒で指定する方が増えてそっち推奨みたいなことが
マニュアルには書かれているのですが。
普通にランダムシークつけれないのは、なにか理由でもあるのだろうか。
マルチプラットフォームまわりの不具合なのだろうか。
PC@DirectX環境なんかの場合だと
再生用プロセスを監視して指定された位置に来たらなんかする。
みたいなのが別スレッドで動いてたりするのですが
その辺の監視が他のいろんな環境では実現出来ないので
最初の再生開始時間をずらすだけ、という仕様になっているのかな……。
んで音楽関係とは別に、
こっちはもっと大事な部分。
バイナリの読み書き関係。
unity的には、たとえば2Dアクションゲームの場合
マップデータというのは、シーンとして
unity上でマウスでぐりぐり配置して作るのが普通? のようですが
やはり昔ながらのバイナリでつくったマップデータを読み込んで
作る方が色々と便利なんですよね。
この場合のマップデータというのは、
マップ内のオブジェクト(床とか)の配置情報ですね。
マップオブジェクト自体はプレハブとしてunity無いに全部用意しといて
マップデータを元に動的にプレハブのインスタンスを作成して
配置するという流れでしょうか。
なにげに微妙に今までの慣れた方法と違うなとおもうのが
基本的にこの方法のメリットとしては
c++などで作ったときの場合
プログラム本体をリビルドすることなく
マップデータを改変するだけで変更が適用される。
というのがあるのですが。
unityの場合はちょっとやり方が変った感じになるぽ。
(上記の方法でもできるっちゃ出来るみたいですが)
unityの場合、GameObjectにTextAssetというデータメンバが用意されていて
(Textとあるけど、バイナリでもOk)
バイナリ形式のファイルを普通にAssetに登録して
GameObject自体にそのファイルを登録する事が出来る模様。
c++の場合と違って
最初からプログラムで使う部品として登録しておけるのが
メリットといえばメリットでしょうか。
c++の場合は、自分で作ったフォルダなどを
この中身はこういう物が入っていると「見なし」て
そういうローカルルール的な前提を規定してる感じだったのが
unityの場合はその辺が判りやすい感じでまとめられると。
んでもなにげにC#て、c++の構造体的なものが無い?
マップファイルを例にあげると
先頭にはヘッダ部分を作るのが普通だとおもうのですが
c++なら、ヘッダ用の構造体を用意して
その構造体分のサイズをファイルから一気に読み込んで~
ってやったりします。
が、C#だとこういうのが出来ないっぽい。
ヘッダ部分を順番にバイナリでデータ長もしくは型を指定して
順次読み込むような方法しかないのかな??
なんかその辺で、メモリ管理周りとかでも
結構独自の仕様があるようで、ちょっとめんどくさそう。
もう一つは、画像ファイルなどの暗号化についても
この辺が必要になるのですが。
いまいちググってみても、あんましいい感じの情報がでてこなーい。
んまあ、当面はまだまだ必要ない部分かもですけども。
最初からunityのエディタ上で登録するよりも
スクリプトから登録する形を基本にした方が良いのかなぁ。
登録時に暗号のデコード処理付きに置き換えたりするのが楽なので。
んでもそれだとunity使う利点が薄れるような。
DXライブラリのDXアーカイブみたいな
最終的にリソースファイルをパッケージする機能とかないのかな?
ふむう。
そんな感じで、いまだにゲーム画面らしい画面を出すところまで
行ってないですw
Sun
Mon
Tue
Wed
Thu
Fri
Sat
01
02
■
■
やばい、呆けてた
03
■
■
新しい物いろいろ
04
■
■
画面はずっと青のまま……
05
06
■
■
まだ画面にはなんにも
07
08
09
10
11
12
13
14
15
16
17
■
■
茨に突進
18
19
20
21
[春分の日]
22
■
■
どうするか迷う
23
24
25
■
■
いっきに散財
26
27
28
■
■
ぷぎゅるぅ
29
30
31
total:2076023 t:50 y:399
■記事タイトル■
■年度別リスト■
2024年
2024年12月(0)2024年11月(0)
2024年10月(1)
2024年09月(2)
2024年08月(1)
2024年07月(1)
2024年06月(5)
2024年05月(2)
2024年04月(1)
2024年03月(6)
2024年02月(4)
2024年01月(3)
2023年
2023年12月(3)2023年11月(1)
2023年10月(2)
2023年09月(3)
2023年08月(3)
2023年07月(3)
2023年06月(7)
2023年05月(8)
2023年04月(2)
2023年03月(1)
2023年02月(2)
2023年01月(3)
2022年
2022年12月(4)2022年11月(3)
2022年10月(1)
2022年09月(3)
2022年08月(3)
2022年07月(2)
2022年06月(1)
2022年05月(3)
2022年04月(2)
2022年03月(2)
2022年02月(1)
2022年01月(6)
2021年
2021年12月(8)2021年11月(3)
2021年10月(4)
2021年09月(6)
2021年08月(2)
2021年07月(1)
2021年06月(3)
2021年05月(2)
2021年04月(2)
2021年03月(3)
2021年02月(1)
2021年01月(4)
2020年
2020年12月(3)2020年11月(7)
2020年10月(2)
2020年09月(3)
2020年08月(1)
2020年07月(3)
2020年06月(7)
2020年05月(5)
2020年04月(8)
2020年03月(4)
2020年02月(2)
2020年01月(4)
2019年
2019年12月(1)2019年11月(1)
2019年10月(2)
2019年09月(1)
2019年08月(3)
2019年07月(2)
2019年06月(2)
2019年05月(2)
2019年04月(4)
2019年03月(1)
2019年02月(7)
2019年01月(1)
2018年
2018年12月(1)2018年11月(1)
2018年10月(5)
2018年09月(1)
2018年08月(5)
2018年07月(1)
2018年06月(1)
2018年05月(1)
2018年04月(2)
2018年03月(2)
2018年02月(1)
2018年01月(1)
2017年
2017年12月(2)2017年11月(1)
2017年10月(2)
2017年09月(5)
2017年08月(8)
2017年07月(2)
2017年06月(1)
2017年05月(1)
2017年04月(3)
2017年03月(5)
2017年02月(7)
2017年01月(8)
2016年
2016年12月(7)2016年11月(2)
2016年10月(3)
2016年09月(7)
2016年08月(8)
2016年07月(10)
2016年06月(17)
2016年05月(6)
2016年04月(8)
2016年03月(10)
2016年02月(5)
2016年01月(10)
2015年
2015年12月(7)2015年11月(7)
2015年10月(13)
2015年09月(7)
2015年08月(7)
2015年07月(5)
2015年06月(4)
2015年05月(5)
2015年04月(2)
2015年03月(4)
2015年02月(1)
2015年01月(7)
2014年
2014年12月(12)2014年11月(8)
2014年10月(4)
2014年09月(6)
2014年08月(7)
2014年07月(4)
2014年06月(2)
2014年05月(5)
2014年04月(4)
2014年03月(8)
2014年02月(4)
2014年01月(8)
2013年
2013年12月(15)2013年11月(8)
2013年10月(3)
2013年09月(3)
2013年08月(8)
2013年07月(0)
2013年06月(0)
2013年05月(0)
2013年04月(0)
2013年03月(0)
2013年02月(0)
2013年01月(0)
■レス履歴■
■ファイル抽出■
■ワード検索■
堕天使の煉獄
https://rengoku.sakura.ne.jp
管理人
織田霧さくら(oda-x)
E-mail (■を@に)
oda-x■rengoku.sakura.ne.jp