Unityを使った3Dゲームの作り方(かめくめ)Unityを使った3Dゲームの作り方(かめくめ)ゲーム開発エンジンUnityを使った3Dゲームの制作に参考になる情報を公開しています。0わたくしのブログではUnityのJavaScriptでスクリプトを記述していますが、UnityではC#でスクリプトを記述する人が80%を超えているとか?(現在はUnityで使えるスクリプトはC#のみでこのブログでもC#スクリプトで書いています)そういうわけで当ブログを参照して頂く時にJavaScriptをC#に書き換える為の方法を見ていきたいと思います。Unityで記述するJavaScript自体が通常のJavaScriptの記述とは違いますので、そこでも多少混乱はあるかもしれません。わたくし自身はC#を勉強した事がないのでC#で記述する際の細かい部分は省略させて頂きます。この記事で取り上げていない細かい違いはいくつもありますがそういった所は都度調べるという感じで対応も出来ると思います。今回取り上げるのは頻出するものに限らせて頂きます。スポンサーリンクスクリプトの作成方法まずスクリプトの作成方法から見ていきます。{}というようなクラス名が作成されます。クラスはデフォルト(何も設定されていない時かわりに設定される)でMonoBehaviourクラスを継承した形で作成されます。JavaScriptでクラスの形式で記述する時はMonoBehaviourクラスを継承するように作成します。Start関数やUpdate関数を使わず普通のクラスとして使いたい場合は何も継承しないかobjectクラスを継承するようにします。JavaScriptで記述する場合クラスの形式で記述しない場合がほとんどになりますが、普段からクラス形式で記述するとC#との読み替えが容易になります。スクリプトを作成するとJavaScriptではStartとUpdate関数がデフォルトで作成されます。C#ではusingディレクティブとクラス、クラスの中にStartメソッドとUpdateメソッドが作成されます。UnityEngine.UI;というディレクティブが追加されます。UIのTextはUnityEngine.UIパッケージの中のクラスなので本来はパッケージ名からすべて記述する必要があります。ディレクティブがあるとパッケージ名の省略が出来るってわけですね。ディレクティブなし}というように変数の宣言時の違いが出てきます。ディレクティブが他に何かあるのかはわかりませんが、読み替える時に知っておくと便利ですね。UI.Text;等と記述する必要があります。UnityEngine以下のパッケージ名から記述する必要があります。C#と同じようにTextと扱いたい場合はusingの代わりにimportを使ってUnityEngine.UIをインポートする事でTextで使用出来ます。これについてはUnityのスクリプトからUIのテキストを操作するUnityのスクリプトからUIのテキストを操作します。C#で書くのとJavaScriptで書くのでは書き方が多少異なるので注意が必要です。19:46でも記述しています。フィールド変数やローカル変数の宣言方法の違い次にフィールド変数やローカル変数の宣言方法とJavaScriptの関数、C#のメソッドを見ていきます。変数名;という順序になります。1);等と型の部分をvarで記述する事が出来、コンパイルの時に型変換を自動でしてくれます。右辺の型が決まっていない場合はvarは使えません。コンポーネントの取得ではGetComponent<取得するコンポーネント>();となります。クラスを使用する時はnewを取りつけています。クラス内ではそのクラスで使用するメソッドの宣言がされており戻り値がない場合はvoidを付けて宣言します。Sumはint型の変数を返すメソッドという事になりますね。このようにクラスの中にフィールドとメソッドを内包している形になります。次に同じものをJavaScriptで記述してみましょう。型;という記述の仕方になります。JavaScriptの場合はvarが必要になります。JavaScriptは動的に型の変換を行うスクリプトなので、型名の記述はしなくても動作します。型をしっかり指定して宣言した方が間違いがないです。コンポーネントの取得はGetComponent.<取得するコンポーネント>();となります。C#と違い<>の前に.(ドット)が必要になります。JavaScriptの場合GetComponent(取得するコンポーネント);という記述でも取得出来ますが、最初に紹介した方法だと型をしっかり指定して取得するらしいのでそちらの方がいいかも。途中point変数にVector3の値を代入していますが、C#と違いnewを付けなくてもコンパイルが通ります。これもnewは付けた方がいいかもしれませんね。フィールドの時と同じようにここでも型を宣言した方がいいのかも。今回のスクリプトでは言及してませんが、文字列型を宣言する時、JavaScriptはStringC#はstringと最初が大文字と小文字で違います。論理型はJavaScriptはbooleanC#はboolと表記が変わります。いう感じで多少違いますが、読み替えるのにそれほど不便になるものでもないと思います。他にもC#ではListとか使えるみたいですが、JavaScriptだと使えないといった事はありますが・・・。JavaScriptでもListを使う事が出来ました。{Debug.Log(value);}まずはimportで明示的にSystem.Collections.Genericをインポートします。Listのジェネリクス版で型指定の前に.を付けます。要素数分繰り返すforeachの代わりにforを使います。for文や関数・メソッドの使い方の違いfor文の変数宣言部でも同じような変数の仕方が必要になるので注意してください。("Test");}JavaScriptはちょっとややこしい感じになりますね。{Debug.Log(num);}配列の初期化も[]と{}で違いますが、C#の場合はforではなくforeachを使います。関数とメソッドの引数の受け取り方も変わります。位置や角度を変更する時にも違いがあります。30f);}}と一括で変更する必要があります。transform.position.z);等とY軸、Z軸には元の値を入れるといいと思います。具体的にキャラクターの移動スクリプトで違いを見ていく最後にJavaScriptで記述したキャラクターの移動とジャンプの機能をC#で書くとどうなるかを見てみましょう。JavaScriptで移動スクリプトを記述まずはJavaScriptで記述した場合です。Time.deltaTime);}C#で移動スクリプトを記述これをC#で書き換えた物が↓になります。正直な所C#で記述した方がいい事が多いかもしれません・・・・(^_^;)なによりMonoDevelopでC#プログラムを書く時に変換候補が出る(インテリジェンス機能?)のが楽です。打ち間違えがなくなる事や、あのクラスのつづりなんだったかな?という時に候補が出てくるんですから。プログラムを書くスピードも速くなりますしね!またAnimatorControllerのBehaviourスクリプトは現状C#でしか記述出来ないみたいなので、Behaviourスクリプトから他のC#スクリプトを取得する時は通常のスクリプトと同様に出来ますが、JavaScriptで書いたスクリプトを取得する場合は特別なフォルダにスクリプトを配置し取得するという面倒くさい事をしなければならなくなるという事でしょうか。Behaviourスクリプトから他のJavaScriptで書いたスクリプトを取得しなければ問題は発生しませんが、使う必要が出た時に大変です。逆にJavaScriptで書く利点は何かと言えば・・・・全部自分でしっかりとプログラムを書く必要があるので関数名等を覚えるという事と、JavaScriptは取りかかりやすいという点はあるかもしれませんね。テキストエディタとブラウザがあればJavaScriptの処理を確認出来ますから。C#でプログラミングを行おうとしたら何かしらインストールしなければいけませんしね。JavaScriptはウェブサイトを作る時にも使うので自身でウェブサイトを作った事がある人は少なからず使ってるしそういう意味でもとっかかりやすいかも?C#の方が便利なのになんでわたくしはJavaScriptで記述しているんでしょうね・・・、最初にJavaScriptを選択してしまったからかもしれませんが・・・(^_^;)いずれC#に切り替えてブログタイトルの(javascript)を外しちゃおうかな・・・・(-.-)2017年04月19日にタイトル名を『Unityを使った3Dゲームの作り方(かめくめ)』に変更しました。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。サイト内検索が出来ますプロフィール管理人のかめくめちゃんです。(-_-)メールはこちらにお願いします(記事への質問はコメント欄にお願いいたします)。kamekumechan@gmail.comいずれはSIRENやバイオハザードみたいなアクションゲームを作りたいと思っています。ゲームシナリオが書けないので面白いゲームはなかなか作れません・・・・。(^_^;)名前の由来はカメが好きだからです。プロフィールになってないな・・・・(-.-)Unityをこれから始める人へこれからUnityを使ってみようという方はUnityを使った3Dゲームの作り方(かめくめ)の歩き方Unityを使った3Dゲームの作り方(かめくめ)で、はじめてUnityの学習をする時の当ブログの記事を読む順番を書きました。21:43の記事に記載の順番で見て頂くとUnityの基本的な使い方がわかり、簡単なTPSゲームの作成までが出来ます。Д`)シクシク...お知らせ2020/02/15個人的にUnity2019.3.1f6をインストールしました。2020/01/31個人的にUnity2020.1.0a21(アルファ版)をインストールしました。2018/08/07コメント欄へのわたくしの返信は停止しております。わたくしに出来る事は既に記事にしてあるので、ブログ右上の検索窓を活用してください。(._.)またブログの最初の方の機能を積み上げていく記事に関しての疑問点は当ブログ記事のスクリプトの説明と寄せられた質問への回答Unityを使った3Dゲームの作り方(かめくめ)の機能積み上げ形式の記事のスクリプトの説明と寄せられた記事の機能についての質問への回答を掲載しています。21:41も参照してみてください。コメントの返信はありませんが、回答は記事に反映されている可能性があります。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。Unityを使った3Dゲームの作り方(かめくめ).。