以下の内容はhttps://alotofdata.blog.jp/archives/cat_261370.htmlより取得しました。


Unityを触っていて、チュートリアルをこなしていたのですが、そこに出てきた一文がありました。

「Transform Tools を使用して、位置、回転、サイズを調整します。」

・・・

Unity_Trans1

なくない?

となったのでメモまで。

一先ず調べてみると、このような記載が

シーンビューで何を選択しててもいいので
右上の地球マークの矢印をクリック,
下までスクロールして
Built in Components のチェックを外します。
するとアラ不思議、ハンドルが表示されるようになりましたとさ。
このあと チェックを戻してもずっと表示されますが、
表示されなくなる場合もあります。
引用元:https://indie-du.com/entry/2021/11/15/124757

Unity_Trans2

…?
地球儀のマークなくない?????

となりましたが、おそらくどこかに隠れているだけだろうと探索を続けます。

Unity_Trans3

するとありました。

Unity_Trans4

Gizmoの中に入っていたみたいです。

2021.3時点での対処法はこれで画面内に表示されるはずなのですが、なぜか表示されません。
おかしいなとなっていたらScene画面外にこんなものが。

Unity_Trans5

…あったんかい!!!

という事で終わりです。










タイトルの通りです。
LoadScene()でエラーを吐くときは大抵ScenesInBuildの欄(File/Build Settings)に追加を忘れていることが大体なのですが、ScenesInBuildに追加しているのにも関わらずLoadScene()でエラーを吐きましたのでメモまで。

【参考】
エラーコード:
Scene 'シーン名' couldn't be loaded because it has not been added to the build settings or the AssetBundle has not been loaded.
To add a scene to the build settings use the menu File->Build Settings...
UnityEngine.SceneManagement.SceneManager:LoadScene (string)

結論としては、C#スクリプトのLoadSceneのファイル名を間違えていませんか?というお話です。

ファイル名がTitleSceneなのに

SceneManager.LoadScene("GameScene");

のように誤字をしていたら当然動きませんし、

SceneManager.LoadScene("TitleScece");

のように一文字でも誤字をしていても動きません。

2,3分「あれれー?」と悩んでましたのでメモがてら残しておきます。







Unityの初心者チュートリアルとかって、この辺はいちいち書いてくれてなかったりするのが悩みものですよね。
私も超久しぶりに開いて忘れかけてたのでメモを残しておきます。
Camera
Unityを開くと上記画像のような画面だと思うのですが、「AssetStore」の表記がありません。
AssetStore
それをこの画像のように追加できるようにする。というだけの記事です。(知ってしまえばなにも考えることのない簡単な内容ですが、わたしも最初これわかんなくて苦労しました。そんな方のための記事です)



①Windowタブをクリック
AssetStore2

②AssetStoreをクリック
AssetStore3

以上です。
すると、
AssetStore
このように表示されると思います。

もっとも、現在AssetStoreタブは機能してないので、Chromeなどの他のブラウザを利用して追加してからPackage Manager経由でImportするという流れになってるみたいです。

自分のメモがてらですが役に立てば幸いです。






最初はUnreal Engineを使おうと思っていたのですが、結局Megascansが使えなかったためUnityに戻ってきました。結局最終的には使えそうでしたが、重かったというのもあります。
と言っても表題の通りで今までCを触ったことがありません。
なので、「ノンプログラミング!」「ビジュアルスクリプティング!」と謳っているBoltを入れて何とかしようと思い立ったのが経緯です。

初心者的に思った「ここ難しい・・・」というところは気が向いたら別途記事にまとめるとして、使用感だけ残しておきます。


・ビジュアルスクリプティングだがノンプログラミングではない
 コードを書かなくていいだけで、プログラミング要素はたっぷり
・操作感はBlenderににてるかも
 ビジュアルスクリプティングの画面がBlenderっぽかったので、Blenderをやってる人からすると、拒否感なく入れるかもしれません。
・サンプルがほぼない
 →多くのゲームツールだと、サンプル読み込んで、そこから処理を学ぶ。ができるけど、それがしんどい。
・参照できる記事が少ない
 日本語文献は「エンジニアが使ってみた」系がほとんどですので「本当にプログラマじゃない人が1から」はしんどい印象があります。
・基本英語
 文献無いからせめてツールを日本語化して・・・っと思っても日本語化してません。
  個人的にはこれが一番つらいかも。日本語で思考しながらビジュアルスクリプティングが出来ないので・・・。
 コードが日本語だとある程度視覚的に分かりやすいんですよね。RPGツクールなんかが人気あるのはそのあたりなのかなっと思ってたり。
・初期の導入が長い
 ビジュアルスクリプティングにするために必要なファイルが結構あるのか、インストールに時間がかかった印象です。
 それでも、UE4よりかはましですが…
・数学が必要
 簡単なものを動かすだけで関数知識が必要になります。


もうちょっと触ってみようとは思いますが、プログラミングした事のない人にはお勧めできるものではないな・・・っと思ったのでメモがてら残しておきます。


まさかStandard Assetでエラーが起きるとは思ってませんでしたので、結構手間取りました。
どれぐらい時間とられたかと言うと5時間ぐらいです。(Unity慣れてません+C#初めてなので・・)
・・・時間返して・・・

というのは置いておきまして、本題に入ります。

「AIThirdPersonControllerを使うと、Playerに迫ってくる敵キャラが作れるよ!」というお話を聞きまして、それを導入しようとすると、AICharacterControlとその下にあるスクリプトがエラーを出して読み込むことが出来ないという問題が発生しました。

暫く検索していて判明したのは以下の通りです。
・AIThirdPersonControllerの問題ではない
↓では何か
・Unity Standard Asset自体の問題

今回は↑の事を分かっていないといつまでたってもこたえにたどりつけないという悪魔の仕様でした。
なので、今後何かしらエラーが出たら、AIThirdPerson単体のエラーではなく、Standard Asset側のエラーの可能性を考慮した方がいいかもしれません。

肝心の解消方法ですが、SimpleActivatotMenu.csを書き換えます。

Before

using System;
using UnityEngine;

#pragma warning disable 618
namespace UnityStandardAssets.Utility
{
    public class SimpleActivatorMenu : MonoBehaviour
    {
        // An incredibly simple menu which, when given references
        // to gameobjects in the scene
        public GUIText camSwitchButton;
        public GameObject[] objects;


        private int m_CurrentActiveObject;


        private void OnEnable()
        {
            // active object starts from first in array
            m_CurrentActiveObject = 0;
            camSwitchButton.text = objects[m_CurrentActiveObject].name;
        }


        public void NextCamera()
        {
            int nextactiveobject = m_CurrentActiveObject + 1 >= objects.Length ? 0 : m_CurrentActiveObject + 1;

            for (int i = 0; i < objects.Length; i++)
            {
                objects[i].SetActive(i == nextactiveobject);
            }

            m_CurrentActiveObject = nextactiveobject;
            camSwitchButton.text = objects[m_CurrentActiveObject].name;
        }
    }
}


After

using System;
using UnityEngine;

using UnityEngine.UI;

#pragma warning disable 618
namespace UnityStandardAssets.Utility
{
public class SimpleActivatorMenu : MonoBehaviour
{
// An incredibly simple menu which, when given references
// to gameobjects in the scene
public Text camSwitchButton;
public GameObject[] objects;


private int m_CurrentActiveObject;


private void OnEnable()
{
// active object starts from first in array
m_CurrentActiveObject = 0;
camSwitchButton.text = objects[m_CurrentActiveObject].name;
}


public void NextCamera()
{
int nextactiveobject = m_CurrentActiveObject + 1 >= objects.Length ? 0 : m_CurrentActiveObject + 1;

for (int i = 0; i < objects.Length; i++)
{
objects[i].SetActive(i == nextactiveobject);
}

m_CurrentActiveObject = nextactiveobject;
camSwitchButton.text = objects[m_CurrentActiveObject].name;
}
}
}


こんな感じでコピペで恐らくはいけます。
ただ、何が変わったんだ? という部分がありますので一応。

まず、4行目に「using UnityEngine.UI;」

を足しています。

さらに、10行目の
public GUIText camSwitchButton;
を、
public Text camSwitchButton;
に変更です。
これだけで一応動くようになると思います~







以上の内容はhttps://alotofdata.blog.jp/archives/cat_261370.htmlより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14