- 投稿日:2020-05-21T22:07:35+09:00
OnBeginDrag内でSerializeFieldを取得できない
つい最近Unityでゲーム制作を始めたのですが、標記の通りで困っています。
Unityの画面からオブジェクトを設定した状態で
OnBeginDragのコード上でDebug.Log(オブジェクト名)をしてもnullと表示されてしまいます。
これはUnityの仕様でしょうか?
- 投稿日:2020-05-21T21:16:53+09:00
Unity Recorderで 360度 動画を作る方法
今回はUnity tipsということで
360度 動画を作る方法を見ていきます。
予め 360度動画や画像を用意しておいて
ください。※ Unityのvrは 2019.3を使用しています。
ステップ1 Unity Recorderを入れる
まずUnityを開いて ウインドウから
パッケージマネージャーを開きます。
画面の右上にある advancdをクリック
そして show previewを選択します。
そしたら Unity Recorderが出てくるので
それをインストールします。
ステップ2 Recorderを開く
ウインドウ→ 一般 → Recorder → RecorderWindowを開きます。
開くとこんな画面になると思います。
ここで 設定をしていきます。
最初に Add NEW Recordersを押して
movieを選択。
format は mp4にする。
Captureを 360Viewにする。
音も入れたい場合は、 audioにチェックを入れる
そして 左上にある、 スタートを押します。
そうすると ゲーム画面が録画されます。
終了したいときは ストップを押します。
このときの注意ですが カメラのタグが
メインカメラになっていないとエラーになります。
出力した動画は パスの所から確認できます。
ステップ3 メタデータを入れてあげる
このままでは、 360度動画で 視点移動ができないので
それをできるようにします。
メタを入れる場合は こちらのツールを使います。https://github.com/google/spatial-media/releases/tag/v2.0
Windows版 とmac版がそれぞれあるので
使っている方を入れていきます。
exeファイルを開くと こんな画面になると思います。
最初にコードの画面が出ると思いますが
それはEnterを押せば大丈夫です。
次に openを押して
先程作った 360度動画を選択します。
そして、 my video is 360にチェックを入れて
Injectを 押して ファイルを保存します。
これで360度動画の完成です。
PS
Unity講座
も 好評発売中です。
セールはもうすぐ終了しますので
- 投稿日:2020-05-21T21:16:17+09:00
Unityで作成したC#スクリプトがVisual Studio 2019で正しく読み込まれない問題
結論から言います
まずUnityを開き、以下の手順で環境設定まで行きます。
[Edit]->[Preferences...]External Script EditorをVisual Studio 2019(Community)に変更します。
[External Tools]->[External Script Editor]->Visual Studio 2019(Community)これで認識させることができました。
参考ページ
SSchmidさん、感謝です。
https://stackoverflow.com/questions/26094908/unity-project-doesnt-have-solution-file背景
気が向いたら書きます。。。
- 投稿日:2020-05-21T15:50:06+09:00
【Unity】ScrollViewでボタン付きのリストを作成する
注意
備忘録で、記事に時間をかけたくないので
わりと適当に書いてます。環境
Unity 2018.4.19 (64bit)
.Net 4.x目的
・ボタンがついた表を作成する。
・削除ボタンでその行を削除する。
・選択ボタンでその行の値を取り出す。構成
準備
Viewport内のContentを自動的にサイズ調整してもらう
ScrollView->Viewport->Contentに以下をAddComponentしましょう
・Vertical Layout Group
・Content Size Filter
Script(ScrollViewRow.cs)
using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; //Listおよび出力先を管理 public class ScrollViewManager { public List<ScrollViewRow> list = new List<ScrollViewRow>(); public Text _Output; public ScrollViewManager(Text Output) { _Output = Output; } public void SetOutput(string text) { _Output.text = text; } } public class ScrollViewRow : MonoBehaviour { private int _value; //Text内で表示される値 private ScrollViewManager _manager; public static ScrollViewRow Create(GameObject ScrollView_Content, GameObject prefab) { //オブジェクトの生成 GameObject obj = Instantiate(prefab, new Vector3(0, 0, 0), Quaternion.identity,ScrollView_Content.transform); //コンポーネントをAdd return obj.AddComponent<ScrollViewRow>(); } public ScrollViewRow ValueSet(ScrollViewManager manager, int value) { _manager = manager; _value = value; return this; } void Start() { _manager.list.Add(this); //テキストの設定 gameObject.transform.Find("Text").GetComponent<Text>().text = _value.ToString(); //選択ボタンイベント登録 gameObject.transform.Find("SelectButton").GetComponent<Button>().onClick.AddListener(SelectButtonOnClick); //削除ボタンイベント登録 gameObject.transform.Find("DeleteButton").GetComponent<Button>().onClick.AddListener(DeleteButtonOnClick); } private void SelectButtonOnClick() { _manager.SetOutput(_value.ToString()); } private void DeleteButtonOnClick() { _manager.list.Remove(this); Destroy(gameObject); } }Script(Sample.cs)
using UnityEngine; using UnityEngine.UI; public class SampleScript : MonoBehaviour { [SerializeField] Text Output; [SerializeField] GameObject ScrollView_Content; [SerializeField] GameObject RowPrefab; void Start() { ScrollViewManager manager = new ScrollViewManager(Output); for (int i = 0; i < 100; i++) { ScrollViewRow.Create(ScrollView_Content, RowPrefab).ValueSet(manager, i); } } }結果
あとがき
はじめて記事を書きましたが、時間が結構かかるので
つづけられる気がしません