UniRxを使用したuGUIのデザインパターンを実装してみた
以下の記事を参考にUniRxを使用したuGUIのデザインパターンを実装してみました
www.slideshare.net
- 今回やってみたこと
- 使用した環境
- MV(R)Pモデル
- 感想
今回やってみたこと
記載したスライドを参考にUniRxを使用してMV(R)Pパターンの実装をしてみました。処理の内容は、RedButton,BlueButton,YellowButtonの3つのボタンを用意して、ボタンを押したらSphereの色が変わるようにしました。
これがデフォルトで
RedButtonを押すとこうなります
以前つくったゲームの処理の一部をUniRxで書き直してみた
前に作ったゲームをUniRxで一部処理を書き換えてみました。自分がどんな処理をUniRxで書き換えたのか記載します。
- 使用した環境は以下
- 今回やってみたこと
- カウントダウンの処理を書き換え
- ゲーム内の 処理の直列化
- 感想
【メモ】Shader Graphを使ってみた
下記サイトを参考にShader Graphを使ってみた。確かに、パズルの様に組み合わせていくだけで色んな表現ができるので、使いこなせたら面白いなと思った。ただ、どういう風に考えれば再現できるのかなーと考え中。Shaderを使う人って何をどう考えて設計しているんだろう。。
UnityでScene遷移時にstatic変数の値を引き継いでしまう問題に遭遇した時
UnityでSceneの遷移時に少しハマったのでメモします。あまり具体例とかないですが。
環境
使用した環境は以下
- Unity 2018.1.3f1
何にハマったのか
各シーンにて、条件を満たすとSceneの遷移が起こるようになっていて以下の様に遷移してみた。
Menu→Play→Menu→Play
最初Menuから入って、その後Playに移って、クリアしたらMenuに戻ってまたPlayへと遷移していたのですが、2回目の遷移の時にゲームが始まった瞬間に終わってしまったり、Clearの時に表示されるUIが消えなかったりして思った様に動いてはくれませんでした。
何が原因だったのか
問題は2つあって、
- 原因となっていたのは、ゲームのプレイ状態(開始・プレイ中・終了のステータス)を保持する変数がstaticで定義されていて、Sceneが変わってもゲームのプレイ状態を引き継いでしまっていたことが問題でした。(クリア後にMenuに戻っても、ゲームのプレイ状態はクリアのままなので、次にPlayにいってもすぐに終了してしまう)
- もう一つは、同じ様にstaticで定義していたのだけれど、Start()の前、インスタンス変数を定義するところで初期化されている変数があったためSceneが始まった際にきれいに初期化されなかったことです。
例として、変更前と
public class PlayManager : MonoBehaviour { float _PlayTime = 20; ~~~
変更後
public class PlayManager : MonoBehaviour { float _PlayTime; void Start () { _PlayTime = 20; } ~~~
何を対応したのか
Scene遷移時にゲームのプレイ状態の初期化を入れたのと、もう一つはインスタンス変数として定義した変数はStart()の中で定義するようにしたこと。この当たりのstatic変数の扱いとかはUnityのベストプラクティス的なものがあるのかな?
Oculus Rift/Oculus Go でレーザーポインタを当てたオブジェクトの色を変える
Oculus Rift/Oculus Go でレーザーポインタを使用して見ようと思い、色々と勉強してみました。今回は、最終的にレーザーポインタがあたったオブジェクトの色を変更するところまで実行します。
- 今回つくったもの
- 環境
- 前提条件
- 追加処理の説明
- Sphere の Collider の削除
- 感想
こんな感じで、レーザーポインタがオブジェクトにあたった時に色を変えています。(赤→黄色)
今回つくったもの
Unity5ゲーム開発レシピ~ハマるゲーム制作のノウハウ~を読んだ
がんばってUnityを使おうと思ってたけど、やっぱ基礎ちゃんとしないといけなくね?ということで参考書を読んだ。結論からいうと今後も続けていきたい。
環境
使用した環境は以下
- Unity 5.6.3p1
感想
ざっくりとした内容
まず、章ごとにやることが決められていて、一つずつステップを踏んでいく様になっている。一からたどればTPSのロボゲーが完成するし、こういこうことやりたいな~って時に開く逆引きの参考書としても優秀。
良い点
Unityは触ったことあるけど、あまり基礎から勉強したことない人にはうってつけな気がする。個人的に、ある程度コードが読めてUnityを触ったことある人で初心者を抜け出したいな~と思っている人は買ってみてもいいのではと思う。参考書にあるコードを写経して理解するだけでもなかなか学びがある感じ。特に、GUIでの操作も文字だけではなくちゃんとキャプチャがはられているので、すごくわかりやすい。
悪い点
Unity5が古いので、参考書の記載だとうまく動かない部分がある。そのため、適宜読み替える必要がある。本当に初心者の場合はその箇所に気がつけず嵌りそうなきがする。あと、やっていることと書いてあることが違ったりするので(結構多い)その部分も適宜読み替える必要がある。そういう点でも初心者向きではないかも。
書評
初心者向きではないが、Unityの使い方を学ぶ点では非常に学びがある。ただ、現在はUnity2018もでていることからかなり古い資料になってしまっている。来年には役にたたなくなっているかもしれないが、それでも今なら勉強の参考書として優秀だと思う。
SpeedTree materials need to be regenerated が出たときの対処法
Unityで下記メッセージが出た時に対処した方法を記載します。
SpeedTree materials need to be regenerated
環境
- Unity 5.6.3p1
発生したタイミング
Assets -> Import Package -> Environment で Import が完了した直後
Unity 2018でArgumentExceptionが出る時の対応
Unity 2018 .1.3f1 をインストールして起動した時に、ArgumentException~というメッセージがでたので、その時に対応したメモ。
メッセージ
ArgumentException: Value does not fall within the expected range. SyntaxTree.VisualStudio.Unity.Bridge.CompilationUnit.LanguageOf (SyntaxTree.VisualStudio.Unity.Bridge.CompilationUnit unit)
最新版ではFIXされてそうだったので、ここのサイトでVisualStudioCommunityをダウンロードして最新版にアップデートすることで解消した。
OculusGoで「USBデバッガ~」が表示されないとき&アプリがビルドできないときの対処法
Oculus Go でUnityのVRサンプルアプリをビルドするまでにハマったところを2点だけ紹介する。予想以上にハマって悔しかったので、少しでも同じことで時間を使う人がいなくなりますように。
ハマりポイント
ケーブル
結論からいうと、純正ケーブルを使いましょう。これはどんな時にハマったかと言うと、PCとOculusGoを接続していて明らかに充電されているのにもかかわらずPCがOculusGoを認識していないとき。そういった時はケーブルを疑いましょう。そこらへんにあるケーブルを使うとまったく認識してくれなかったので純正ケーブルのほうが100パーセント安心です。どんなケーブルならOKかわからないですが、PCが認識してくれない時はケーブルが怪しいです。
ドライバをたくさんいれたけど、認識しなかったわちくしょう。
VRでゲームを作って遊んでみた~飛んでくる弾を切る~
休日を使い、一気にゲームを作りきってみました。ステージ作成、クリア・ゲームオーバー判定などなど、、、まだまだ甘いところは多いけど、ひと段落ついたかなといった感じです。その勢いのまま、多田くんは恋をしないを見始めました。荒ぶった心に染み渡る。
今回つくったもの
youtu.be
ソードアートオンラインⅡ9話でキリトが光剣で銃の弾を撃ち落とすシーンがイカしてたのでそのイメージで作ってみました。
- 今回つくったもの
- やったこと
- ステージを作成する
- Terrain
- Skybox
- クリア判定できるようにする
- ゲームオーバー判定できるようにする
- タイトル画面を作成する
- タイトル画面用のシーンを作成する
- 改善:剣を常に持った状態にする
- 改善:HPのUIを変える
- ステージを作成する
- 感想