ゲーム開発編:p.134 スマートフォン向けの画面にする:プロジェクトを作成
・Unityのバージョンアップにより、手順が変わっている ・まず、Unity Editorを閉じてUnity Hubに戻り: ① エディターのバージョンを6000.0.xにしてから「New Project」 ②「2D(Build-In Render Pipeline)」を選択 ③ プロジェクト名(例:furiCSharpGame)、保存場所を指定 ④「Unity Cloudに接続」はオフにする ⑤「プロジェクトを作成」 ⑥「… at my own risk」
ゲーム開発編:p.134 スマートフォン向けの画面にする:スマートフォンの画面サイズに合わせる
・テキストp.135の手順①~⑤を実行 ・シーンのサイズが変わっていないようにみえるが、これはスケールが大きいままのため ・よって、Projectの高さを減らしてから、Scaleのスライダーを左端まで下げると良い
ゲーム開発編:p.136 ゲームで使用する画像を用意する
・p.136① [Project]タブをクリックし「+」をクリック ※ Unity6から「InputSystem_Actions」が自動生成されるようになっているが無視してOK ・テキストp.136の手順②~③を実行 ・それから、Imagesフォルダをダブルクリックして開いておく
ゲーム開発編:p.136 ゲームで使用する画像を用意する:画像ファイルを取り込む
・用いる画像はダウンロードした「furiCSharp_sample」の中の「gameimage」フォルダにある ・全10ファイルをUnityのImagesフォルダにドラッグ&ドロップする
ゲーム開発編:p.139 プレイヤーキャラクターを出現させる
・①「Hierachy」の「+」をクリック ・②「2D Object」「Sprites」「Square」 ・テキストp.139の手順③を実行
ゲーム開発編:p.140 プレイヤーキャラクターを出現させる つづき
・①「Sprite」の「Square」の右の「〇の中に・」をクリック ・②「Shooter_0」をダブルクリック
ゲーム開発編:p.141 座標を指定してShooterを移動する
・①[Transform]の[Position]の[X]を0に、[Y]を4にする
ゲーム開発編:p.141 スクリプトを使ってShooterを動かす
・p.142①「Add Component」「New Script」で「shooter」と入力しEnter ・「:」右クリックで「Edit Script」
p.142 Shooter.cs
using UnityEngine;
public class shooter : MonoBehaviour {
float move = 0.05f; //単精度実数型のフィールド変数moveの初期化
void Update() {
Vector3 pos = transform.position; //構造体Vector3のオブジェクトposをプロパティを利して生成
pos.x += move; //オブジェクトposの持つ変数xにmoveの値を足し込む
transform.position = pos; //オブジェクトposをtransformプロパティに渡すと画面に反映
}
}
文法編:構造体
・構造体はC言語に元々ある仕組みで、複数の変数をグループ化して扱う手法
・なお、複数の同じ型と意味の変数をグループ化するのが配列、型や意味が異なる変数をグループ化するのが構造体
・Vector3構造体の場合、3次元データを表す3つの変数x、y、zをグループ化して扱うためなどに用いる
・構造体はintなどと同様にデータ型として利用できる(クラスにおける変数と同様)
・C#では、C言語で書かれたプログラムの移植時に、クラスにすると効率が落ちるのを避けるために「軽量クラス」として
「C#の構造体」が利用可能
・よって、C言語の構造体とは異なり、「C#の構造体」ではデータ以外にメソッドなども記述でき、
継承を行わないクラスなどで用いることが多い
・Vector3構造体はUnityが提供するものだが、プログラマが自前の構造体を定義して用いることも可能
・書式例: struct 構造体名 { 定義内容 }
・構造体もクラスと同様に、構造体名を型とするオブジェクト名を定義してオブジェクトを生成して用いる
作成例 ex0727b
using UnityEngine;
public class ex0727b : MonoBehaviour{
struct Map { //2D座標の構造体の定義
public int x; //Map構造体の持つデータ
public int y; //同上
}
void Start() {
Map player = new Map(); //Mapオブジェクトplayerを生成
player.x = 100; //playerが持つ変数xに代入(プレイヤーのX座標を設定)
player.y = 200; //playerが持つ変数yに代入(プレイヤーのY座標を設定)
Debug.Log(player.x + ", " + player.y); //playerが持つ変数の値を出力
}
}
提出:文法編:構造体の作成例 ex0727b