質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

4回答

958閲覧

Unity C# 方向の指定について

T0mmy

総合スコア12

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2018/12/19 02:37

using System.Collections;
using UnityEngine;
using UnityEngine.UI;

public class GameManager : MonoBehaviour {

public const int WALL_FRONT = 1;  //前 public const int WALL_RIGHT = 2; //右 public const int WALL_BACK = 3;  //後 public const int WALL_LEFT = 4;  //左 public GameObject PanelWalls; private int wallNo; // Use this for initialization void Start () { wallNo = WALL_FRONT;

......引用『UnityではじめるC# 大槻 有一郎 』.......

上記のコード内で、方向を1~4の数字で指定している部分があると思います。
int WALL_FRONT = 1;
int WALL_RIGHT = 2;
int WALL_RIGHT = 3;
int WALL_RIGHT = 4;
どこにも、「1」という数字は、「前」を意味するという指定はしていないのに、なぜ、変数「WALL_FRONT」に「1」を代入しただけで、「1は、前」ということになるのでしょうか?

自分なりに考えてみたのですが、最初に、
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
というコードを書いているので、このUnityEngineまたは、UnityEngine.UIを使うという指定をしているので、この中に、「WALL_FRONT」に「1」を代入しただけで、「1は、前」というプログラムが、すでにUnityの中に入っているのではないのか?という考えに至りました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

少なくともUnityにはWALL_FRONTにまつわる命令はありません。
(もし存在するなら、変数として定義したら逆にエラーになります)

私はその本を持っていないので推測になりますが、
「『WALL_FRONT(正確には1)が渡されたら前』というスクリプトが引用部分以降に書かれている」
だと思います。

wallNo = WALL_FRONT;というコードが見えるので、
「制御する壁(wallNo)を定数(WALL_FRONT〜WALL_LEFT)で指定する」
「その後ifかswitchでもしwallNoがWALL_FRONTならという条件分岐をする」
という流れなのかなと思います。

自分で確認する方法としては、コード内の文字検索をするというのがあります。
今回なら「WALL_FRONT」か「wallNo」で検索すると、それが使われている行が分かるので、そこで何をしているのか眺めると意味が掴めるのではないかと思います。
(もし何をしているのか分からなかったら、都度クラス名・メソッド名をGoogle検索するといいと思います)


ちなみに質問・回答投稿時、コードの前後には「```」を付けると見やすくなります。以下をご参照ください。
質問するときのヒント|teratail(テラテイル)

投稿2018/12/19 02:45

編集2018/12/19 02:50
sakura_hana

総合スコア11425

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T0mmy

2018/12/19 11:03

詳しい説明ありがとうございます。 たしかに、その先のスクリプトには続きがあって、そこで条件を指定しているようです。 参考になりました。
guest

0

プログラマ(著作者)が自分で決めたルールだと思います。

例えば「プレイヤーが現在4方向のうちどの方向を向いているか?」という状態を変数で覚えておく必要があったとして、
その実現方法の一つが、向きを整数で扱い、1だったら前、2だったら...と自分で決めてしまう事です。
別に数値自体はなんでもいいです。1でも100でも。区別さえ付けば。

投稿2018/12/19 02:51

takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T0mmy

2018/12/19 11:04

なるほど、数字の部分は、自分で指定できるものでしたか。 ありがとうございました。
guest

0

まず、constをつけて宣言すると、「変数」ではなく「定数」として扱われます。
変数はプログラム内で自由に値を変更することができますが、定数は初期化時に設定した値から変更することはできません。

また、提示されたコードですが、プログラムを見やすくするために、1に名前をつけているという感じだと思ってよろしいかと思います。

C#

1 2int 進行方向; // 現在の進行方向を格納する 3 4進行方向 = 1; // 前に進む 5進行方向 = WALL_FRONT;

と進行方向へ格納するのはどちらも同じ値になります。
どちらが読みやすいですか?

WALL_FRONTと名前をつけていますが、この値をどう使うかは作成者次第です。
極端な話、WALL_FRONTとしながら、これは「後ろ」を示すとすることもできます。(ややこしいのでやりませんが)

投稿2018/12/19 02:50

YAmaGNZ

総合スコア10222

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T0mmy

2018/12/19 11:07

ありがとうございます。
guest

0

その人が後の条件式で使用する為にそう定義しただけで名前空間には入っていません。

投稿2018/12/19 02:48

Hawn

総合スコア1222

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T0mmy

2018/12/19 11:07

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問