20200521のUnityに関する記事は4件です。

OnBeginDrag内でSerializeFieldを取得できない

つい最近Unityでゲーム制作を始めたのですが、標記の通りで困っています。
Unityの画面からオブジェクトを設定した状態で
OnBeginDragのコード上でDebug.Log(オブジェクト名)をしてもnullと表示されてしまいます。
これはUnityの仕様でしょうか?

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Unity Recorderで 360度 動画を作る方法

今回はUnity tipsということで 

360度 動画を作る方法を見ていきます。 

予め 360度動画や画像を用意しておいて 
ください。

※ Unityのvrは 2019.3を使用しています。

ステップ1 Unity Recorderを入れる

まずUnityを開いて ウインドウから 

パッケージマネージャーを開きます。  

開くとこんな画面になるので ↓
bandicam 2020-05-21 20-25-41-157.jpg

画面の右上にある advancdをクリック 

そして show previewを選択します。 

そしたら Unity Recorderが出てくるので 

それをインストールします。 

ステップ2 Recorderを開く 

ウインドウ→ 一般 → Recorder → RecorderWindowを開きます。 

開くとこんな画面になると思います。

bandicam 2020-05-21 20-33-52-246.jpg

ここで 設定をしていきます。 

最初に Add NEW Recordersを押して 

movieを選択。

format は mp4にする。 

Captureを 360Viewにする。

音も入れたい場合は、 audioにチェックを入れる 

そして 左上にある、 スタートを押します。

そうすると ゲーム画面が録画されます。 

終了したいときは ストップを押します。 

このときの注意ですが カメラのタグが 

メインカメラになっていないとエラーになります。

出力した動画は パスの所から確認できます。 

ステップ3  メタデータを入れてあげる

このままでは、 360度動画で 視点移動ができないので 

それをできるようにします。
メタを入れる場合は こちらのツールを使います。

https://github.com/google/spatial-media/releases/tag/v2.0

Windows版 とmac版がそれぞれあるので 

使っている方を入れていきます。

exeファイルを開くと こんな画面になると思います。

bandicam 2020-05-21 20-49-03-487.jpg

最初にコードの画面が出ると思いますが 

それはEnterを押せば大丈夫です。  

次に openを押して 

先程作った 360度動画を選択します。 

そして、 my video is 360にチェックを入れて 

Injectを 押して ファイルを保存します。  

これで360度動画の完成です。 

PS

Unity講座
も 好評発売中です。 
セールはもうすぐ終了しますので

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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

背景

気が向いたら書きます。。。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Unity】ScrollViewでボタン付きのリストを作成する

注意

備忘録で、記事に時間をかけたくないので
わりと適当に書いてます。

環境

Unity 2018.4.19 (64bit)
.Net 4.x

目的

・ボタンがついた表を作成する。
・削除ボタンでその行を削除する。
・選択ボタンでその行の値を取り出す。

構成

ScrollView.png

準備

  1. Viewport内のContentを自動的にサイズ調整してもらう
     ScrollView->Viewport->Contentに以下をAddComponentしましょう
    ・Vertical Layout Group
    ・Content Size Filter
    ScrollView2.png

  2. RowのPrefabを作成
    構成を下図に示します.
    ScrollView1.png

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);
        }
    }

}

結果

ScrollView3.png

あとがき

はじめて記事を書きましたが、時間が結構かかるので
つづけられる気がしません

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む