【Unity】初心者の99パーセントはここで挫折する。解決策はこれ。

基礎

こんにちは。りきです。

今回は初心者がつまづいて挫折に陥るたった一つのポイントについて解説します。

僕も何度も経験してきた部分なので、納得していただける内容に仕上がってると思います。

初心者にとって最大の挫折ポイント。それは・・・

結論から言いますと、初心者にとって最大の難所、挫折ポイントはズバリ

C#です。

C♯スクリプトはどういうものかというと、こんなもの↓

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class StageManager : MonoBehaviour
{
    public TextAsset stageFile;
    TileType[,] tileTable;
    public TileManager tilePrefab;
    void Start()
    {
        LoadStageFromText();
        DebugTable();
        // Instantiate(tilePrefab);
        CreateStage();
    }

    void CreateStage()
    {
        Vector2 halfSize;
        float tileSize = tilePrefab.GetComponent<SpriteRenderer>().bounds.size.x;
        halfSize.x = tileSize * (tileTable.GetLength(0) / 2);
        halfSize.y = tileSize * (tileTable.GetLength(1) / 2);

        for (int y = 0; y < tileTable.GetLength(1); y++)
        {
            for (int x = 0; x < tileTable.GetLength(0); x++)
            {
                TileManager tile = Instantiate(tilePrefab);
                tile.SetType(tileTable[x,y]);
                Vector2Int position = new Vector2Int(x, y);
                Vector2 setPosition = (Vector2)position * tileSize - halfSize;
                setPosition.y *= -1;
                tile.transform.position = setPosition;
            }
        }
    }

    void LoadStageFromText()
    {
        string[] lines = stageFile.text.Split(new[] {'\n','\r'}, System.StringSplitOptions.RemoveEmptyEntries);
        int columns = 5;
        int rows = 5;
        tileTable = new TileType[columns, rows];
        for (int y = 0; y<rows; y++)
        {
            string[] values = lines[y].Split(new[] {','});
            for (int x = 0; x < columns; x++)
            {
                if (values[x] == "0")
                {
                    tileTable[x, y] = TileType.DEATH;
                }
                if (values[x] == "1")
                {
                    tileTable[x, y] = TileType.ALIVE;
                }
            }
        }
    }

シーン内のゲームオブジェクトを思い通りに動かすためにはどうしてもC♯スクリプトが必須なわけですが、このハードルが高いのなんのって。

C♯の構文やらクラスやら関数やら、色々覚えることが盛りだくさんな訳です。

今までどれだけたくさんの人々がUdemyやYoutubeや本などの教材を見て、スクリプトを写経して、自分の作りたいゲームを作れずに終わっていったことか・・・・。

では、何がC♯のハードルを高くしているのか?

言い換えれば、なぜC♯が難しいのか?

その理由を説明します。

C♯が難しい理由① エラーがウザすぎる

C♯を使う上で、エラーは避けて通れません。

でもエラーってすっっっっげええええええストレスかかるんですよ。特に初心者のうちは。

なぜかっていうと、コーディングって基本的に「苦痛」なんですよね。

やっと完成した、これでうまくいくはずだっていう期待を、ぶち壊してくれるんですよ。

もう本当にやめて欲しい。

何度かこのエラーから抜け出せないと、エラーが「人格の否定」に見えてくるんです。

すなわち、「なんでこんなこともできないの?」「才能ないね」

と言われているような気分になるんです。

でも、YoutubeやUdemyや本の教材は、そんなエラーについて解説してない。

どこかでスペルミスや記号の抜けがあるだけ。

ただそれだけなのに、初心者を挫折させるには十分すぎるダメージがあります。

C♯が難しい理由② エラーが怖くて手直しができない

エラーが怖くて手直しできません。

だって、せっかく頑張って作ったんだもん。

もしいじって失敗して元に戻らなかったら、「もったいない」じゃん。

もったいないから、いじれない。

けど、失敗なしで成長するなんてありえないこと。

そんなこと、頭でわかってるけど、、、

けど、

今日1日かけてやっと完成させたこのデリケートなトランプタワーに、装飾なんてできない。

そう考えるのは、普通のことです。

C♯スクリプトなしでUnityゲーム開発をする方法

それでは、どのようにしてC#スクリプトなしでゲーム開発をするか。

答えは簡単。

「VisualScripting」を使えばいいんです。

もう一度言います。

「ビジュアルスクリプティング」を使えばいいんです

ビジュアルスクリプティング?

VIsualScriptingとはなにか?

こういうものです。

簡単にいうと

「C#スクリプトの代わりに作られた、誰でも簡単に作れるスクリプト」

です。

ご覧の通り、ひとつひとつのユニットをポチポチ繋いでいくだけで、簡単にゲームが作れます。

意外と簡単に見えませんか?

そうです。「簡単そうに見えるのです」そこが大事。

少なくとも、C♯よりかは数百倍とっかかりやすいです。

この方法は、C♯の全てのデメリットを消し去る

この方法は、今まで挙げてきたC♯のデメリットを拭い去ります。

すなわち、

「コーディングミスによるエラーがほぼ発生しない!!!」

「エラーが発生しないから手直ししやすい!!!」

のです。

時折、エラーは出ますがとにかく失敗できる回数が段違いなので、すぐに上達します。

だって、失敗が怖くないんだもん。

C♯とは違って、「;」抜けやスペルミスなどの細かい部分を指摘されることはなくなるからね。

本当にビジュアルスクリプティングをお勧めする。

マジで。

まとめ

初心者がゲーム開発をするんだったら、C#ではなくビジュアルスクリプティングを使うことを強く勧める。

でもビジュアルスクリプティング、どうやって使うの?

現在、僕の24000円するUdemy教材を無料配布しています。

ここを見れば、ある程度ビジュアルスクリプティングでゲームが作れるようになっています。

無料クーポンの受け取りはこちらから!⇨https://lin.ee/NnZABtJ

このブログは、ビジュアルスクリプティングを用いたゲーム開発に特化したブログになってます。

完全特化です。ビジュアルスクリプティングに魂を捧げた男が運営してます。

ぜひコメントで応援していただけると嬉しいです。

それでは。

コメント

  1. rikisanchanman より:

    https://www.popii33.com/
    私の敬愛するUZI(内山)さんのブログです!!