講義メモ

・「p.32 スクリプトの構造を見てみよう」から

p.32 スクリプトの構造を見てみよう

using System.Collections; //C#側の名前空間(提供するクラス(部品)の置き場所):未使用
using System.Collections.Generic; //同上
using UnityEngine; //Unity側の名前空間:必須

public class Chap1_4_1 : MonoBehaviour { //Unity提供するクラス(機能)を継承して使用
    void Start() { //初回のフレーム(画面)表示の時のみ呼ばれるメソッド(手順)
        Debug.Log("ハロー"); //デバッグ(動作確認)用機能を用いて記録に書く        
    }
    void Update() { //毎回のフレーム表示時に呼ばれるメソッド
        //ここでは何もしない
    }
}

p.33 クラスのブロック内にメソッドのブロックがある

・C#などC系言語では「{」から「}」で処理範囲や影響範囲を示す。
・「{」から「}」で囲まれた領域をブロックといい、ブロックの中にブロックを置く「入れ子構造」が可能
・基本的に全体をclassキーワードで示すクラスとして記述し、その中に複数個のメソッド(処理)などを記述する。
・「//」で始まる文はコメントであり、実行には用いられないメモ書き。
 ※ 業務上では記述ルールに従って記入することが求められる

p.034 演算子と数値を組み合わせて「式」を書く

・演算子は加算のような計算を記号や単語で示すもので、加算の「+」は「+演算子」という
・C#では加減乗除算用に「+」「-」「*」「/」演算子が利用可能
・ただし、演算子の前後の特性や、前だけに置く場合など、意味が異なったり制限があることに注意
・演算子を用いて式を書き、これが実行対象になると計算が行われ結果が得られる。このことを「評価する」という。
・例えば「Debug.Log(112 + 144);」とすると式「112 + 144」の評価結果「256」が、式のある場所に置かれて「Debug.Log(256);」
 となってLogメソッドに渡される。

p.35 新しいスクリプトを追加する

・Unityで実行中ではないことを確認する(プレイボタンを確認し実行中になっていたらクリックして止める)
・Inspectorで現在のスクリプト「Chap1_4_1」のチェックをオフにする
・「Add Component」「New Script」
・Nameを「Chap1_6_1」に変更し「Create and Add」
・Projectに切り替えてAssetsに「Chap1_6_1」が増えていることを確認
・Inspectorの「Chap1_6_1(Script)」の「:」(実際は…の縦)「Edit Script」
・Visual Studioに切り替わり新しいタブにソースが表示されるので、p.35の通り追記

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

public class Chap1_6_1 : MonoBehaviour {
    void Start() {
        Debug.Log( 10 + 5 ); //式10+5の評価(加算結果)を出力
        Debug.Log( 10 - 5 ); //式10-5の評価(減算結果)を出力
    }
    void Update() {
        
    }
}

・Ctrlキーを押しながら[s]キー。または「ファイル」「Assets\Chap1_6_1.csの保存」
・Unityに戻って中央上の「△の右向き」のプレイボタンをクリックすると動作する
・左下のConsoleを開くと、実行結果として「15」と「10」の2件が表示されている
・実行結果を確認したら「△の右向き」のプレイボタンを再度クリックして停止

p.036 掛け算と割り算

・「×」記号の代わりに「*」で積算を実行できる
・「÷」記号の代わりに「*」で除算を実行できるが、対象の数値によって作用が異なる
・「10 / 5」のように双方が整数だと結果も整数になる
・よって「10 / 4」のように結果に小数点以下があると、切り捨てられて2.5→2になる
・これを避けるにはどちらかに小数点を付ける(実数にする)と良い
・よって「10.0 / 4」とすると、実数で2.5になる
・なお、コンピュータ内では整数と実数は別扱いになっている

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

public class Chap1_6_2 : MonoBehaviour {
    void Start() {
        Debug.Log( 10 * 5 ); //式10*5の評価(積算結果)を出力
        Debug.Log( 10 / 5 ); //式10/5の評価(除算結果)を出力       
    }
    void Update() {
        
    }
}

p.37 主な計算用演算子一覧

・加減乗除に加えて、剰余算の%演算子が用意されている(百分率とは無関係なので注意)
・例: 23 % 9 → 23÷9=2…5 なので評価は5になる
・負の数を含む剰余算の解釈は言語や処理系によって異なるので注意
・C#では、負の数を含む剰余算は正の数として行われ、負の数を割った余りは負の数とする

アレンジ演習:Chap1_6_2

・剰余算「23 % 9」を追記しよう
・また、負の数を含む剰余算「23 % -9」「-23 % 9」「-23 % -9」も追記して結果を確認しよう

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

public class Chap1_6_2 : MonoBehaviour {
    void Start() {
        Debug.Log( 10 * 5 ); //式10*5の評価(積算結果)を出力
        Debug.Log( 10 / 5 ); //式10/5の評価(除算結果)を出力       
        Debug.Log(  23 %  9 ); //式 23%9 の評価(剰余算結果)を出力=5       
        Debug.Log(  23 % -9 ); //式 23%-9の評価(剰余算結果)を出力=5 
        Debug.Log( -23 %  9 ); //式-23%9 の評価(剰余算結果)を出力=-5 
        Debug.Log( -23 % -9 ); //式-23%-9の評価(剰余算結果)を出力=-5
    }
    void Update() {
        
    }
}

今週の話題

販売本数ランキング 今回トップは「スーパーマリオブラザーズ ワンダー(Switch)」GO!
『スト6』売上本数250万本間近!カプコンが最新の決算発表―『ロックマンエグゼ』コレクションも140万本突破、『モンハンNow』も人気に GO!
GOTYの栄光を手にするのは?「Golden Joystick Awards 2023」最も栄誉ある賞のノミネート作品が発表! GO!
任天堂が“コミュニティ大会”に関するガイドラインを公開…スポンサー禁止や出場、入場料、出場者数の上限などが細かく設定される GO!
最先端のAI技術でゲーム開発/グローバル展開を強力サポート―Keywords StudiosのCEOが語る世界的ソリューションプロバイダの強みとは GO!

チート・海賊版対策を「内製化」し技術という名の「武器」を手に入れた…カプコンがセキュリティへの取り組みを明かす GO!
ドリコムが赤字転落―新規ゲーム不調で未発表タイトルが開発中止へ GO!
過去にはカプコンも情報流出の被害に…ランサムウェア集団「ラグナロッカー」ついに中心メンバー摘発―国際警察機関の共同捜査が実を結ぶ GO!

前回のコメント

・ペースはこのくらいでちょうどよかったです。
・授業の全体的なペースとしては、少しゆっくりではありましたが、気にならない程度で丁度よいとかんじました。

 了解です。リアクション感謝します。
 お二人とも理解度が高いご様子ですので、ペースを上げ気味に進めたいと思います。

・次回もよろしくお願いします。

 こちらこそ、よろしくお願いいたします。

講義メモ 後半

【補足説明1】プログラムについて

・入力したプログラムをソースプログラムといい、人間のプログラムなので、コンピュータ(C#システムやUnity)
 から見ると単なる文字列
・そこで、内部的には(今回はプレイボタンを押すことで)ソースファイル(.cs)のプログラムをコンピュータ用の
 実行プログラムに変換する作業が下記の手順で動作する
 ① ソースファイルのプログラムを機械語(2進数)に翻訳(コンパイル)し中間ファイル(.obj)を作る
 ② 中間ファイルにC#やUnityが提供する共通モジュール(ライブラリ)を結合(リンク)して実行ファイル(C#では.exeだが
 Unityでは一時ファイルなので見えない)を作る
 ③ Unityが実行ファイルを動作させて画面や結果を表示する
 ④ ユーザの指示によって実行ファイルを止める
 ※ Visual Studioではコンパイル+リンクをビルドという

【補足説明2】プログラム言語について

・C#はC言語を基にJava言語を参考にしてマイクロソフトなどが開発した汎用言語
・C言語はUnixというOS(WindowsやMacOSの祖先)を記述するために開発された言語で、わかりやすく機械語並みに
 パワフルなのが特徴
・また、C言語を基にオブジェクト指向(後述)を取り込んだのがC++で、WindowsなどのOSの記述や、Unreal Engine
 などの開発ツールで活用されている
・C#もオブジェクト指向言語だがより徹底&洗練されており、オブジェクト指向のメリット(グループ開発、部品化、
 再利用)がより受けられる。
・同等なのがJava言語で、開発者は異なるが、C#と似た作りになっている。
・なお、C/C++/C#/JavaをC系言語ということがあり、これらでは「=」に「等しい」という意味がないことが共通
 (等しいは「==」)
・ちなみに、主にWeb用のスクリプト言語(簡易プログラム言語)であるJavaScriptはJavaとは無関係
 (正式仕様名はECMA Script)。

アレンジ演習:Chap1_4_1.cs

・Debug.Logのカッコ内の「"ハロー!"」は文字列を表している
・このダブルコーテーションをシングルコーテーションにすると1文字のみの文字を表せる
・Debug.Logは文字列も文字も扱えることを試してみよう
・Debug.Logのカッコ内の「"ハロー!"」を「'ハ'」と書き換えて動作を確認しよう

作成例

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

public class Chap1_4_1 : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log('ハ');
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

【補足説明3】Create Emptyについて

・各種の開発ツールでは、あらかじめ頻繁に使われる開発形態に対応したテンプレート(ひな形、骨組み)を複数用意する
 ことが多い
・同時に、学習や評価に便利な「最もシンプルなテンプレート」を用意している。Unityではこれが「Create Empty」で
 用いられている
・ちなみに、Visual Studioでは「空のプロジェクト」が目的別に用意されている
・Create Emptyで作成されるゲームオブジェクトには、ソースファイルのテンプレートが用意されており
 「Create and Add」で呼び出されてソースファイルに書き込んだ状態で提供される
・通常、これらのテンプレートはプログラマの都合に合わせて編集可能

【補足説明4】Debug.Logについて

・p.29に「Debug=デバッグ機能、Log=表示しろ」とあるが、デバッグとは虫取りの意味で、プログラムの動作を
 妨げる要素=バグ(虫)を取り除くことで、プログラムをあるべき姿にする作業のこと
・よって「Debug.Log」はプログラミングのためのツールであり、完成品には残すべきではない
・しかし、学習や動作確認には便利なので活用されている
・Logは正しくは「ログを出せ=記録しろ」の意味で、主にコンソールへの出力に該当する。
・なお、WindowsなどのOSやサーバ、ネットワーク機器などではログを記録したり確認する機能があり、動作のチェックや
 統計やセキュリティ向上に活用されている
・Logはメソッド(動作を示すもので、C言語でいう関数)で、カッコの中がメソッドに渡す情報(引数)になっている
・C言語などの関数は引数の特性(データ型)が固定で、文字列用の関数には文字は渡せない
・C#などのメソッドにはオーバーロードという仕掛けがあり、複数のデータ型に対するメソッドを作成できる。
 その一例がLogメソッドで、文字列や文字以外のデータ型に対応している

提出方法

・VisualStudioで提出ソース(アレンジ演習:Chap1_4_1.cs)を開いた状態で「ファイル」「印刷」
・プリンターを「Microsoft Print to PDF」に変更し「印刷」
 ※「印刷」がでなけばVisual Studioを閉じて、Unityの「Edit Script」から開けなおす
・「ドキュメント」でファイル名に「1022名前」と入力し「保存」
・講義サイトの「提出フォーム」で「お名前」「メッセージ(質問・感想・要望・ペースについて等)」を入力し「Browse Files」をクリック
・「ドキュメント」にある「1022名前.pdf」を選択し「開く」
・「送信」

講義メモ 前半

・オリエンテーション
・Unity C# 最初の一歩

p.21 Unityを起動する

・スタートボタン→すべてのアプリ→Uにある「Unity HUB」

p.23 プロジェクトを作成する

・「新しいプロジェクト」「2D コア」
・プロジェクト名を「ローマ字の苗字」に続けて1022(月日)に
・(スクロールアップして)保存場所を「ドキュメント」に
・「プロジェクトを作成」
※「Unity」 Editor Update Check」が表示されたら「Skip new version」を
※ 画面レイアウトがテキストと異なったら「Window」「Layouts」「Default」

p.24 シーンにゲームオブジェクトを追加する

・テキストでは「① Createをクリック」とあるが、左上の「+」をクリックし「Create Empty」
・「GameObject」がHierarchyに追加される
・右側のInspectorに「GameObject」が表示されていなければ、Hierarchyの「GameObject」をクリック

p.25 ゲームオブジェクトにスクリプトのコンポーネントを追加する

・「Add Component」「New Script」
・Nameを「Chap1_4_1」に変更し「Create and Add」
・右側のInspectorに「Chap1_4_1(Script)」が、中央下のAssetsに「Chap1_4_1」があるのを確認
 ※ テキスト(旧Unity)では「C#」アイコンだったが「#」アイコンに変わっている

p.27 スクリプトを編集する

・右側のInspectorの「Chap1_4_1(Script)」の「:」(実際は…の縦)「Edit Script」
 ※ テキスト(旧Unity)では歯車アイコンだったが3点アイコンに変わっている
・なお、中央下のAssetsの「#」アイコンをダブルクリックしても同じ動作になるので、スクリプト数が増えてきたら、
 この方がわかりやすい
・(テキストでは9行目だが)10行目に「Debug.Log("ハロー!");」と入力

p.30 スクリプトを実行しよう

・テキストでは「[ctrl]+[s]キーを押して」とあるが正しくはCtrlキーを押しながら[s]キー。
 または「ファイル」「Assets\Chap1_4_1.csの保存」。
 ※ 講座前半では1プログラム1ファイルなので上記でOkだが、後半では複数ファイルになるので、
 保存ミスを避けるために「ファイル」「すべて保存」または、CtrlキーとShiftキーを押しながら[s]キーを推奨
 ※ エディタタブのファイル名末尾に「*」が表示されているのは未保存を示す
・Unityに戻って中央上の「△の右向き」のプレイボタンをクリックすると動作する
・左下のConsoleを開くと、実行結果として[時:分:秒]と「ハロー!」が表示されている
・実行結果を確認したら(Unity側ではプログラムを止めないので)「△の右向き」のプレイボタンを再度クリックして停止すること
 ※ 動作したままだとスクリプトの再実行ができない

今週の話題

販売本数ランキング 今回トップも「帰ってきた 名探偵ピカチュウ(Switch)」GO!
上位10アプリの合計消費支出は約151億円に―data.ai、2023年第3四半期ゲームアプリランキングを発表 GO!
「東京eスポーツフェスタ2024」プレイベントが10月21日開催―出展検討事業者に向け説明会/ゲストトーク/交流会をオン&オフラインにて実施 GO!
PlayStation PlusプレミアムプランにてPS5向けのクラウドストリーミング開始―ゲームカタログやトライアルの作品をダウンロード無しでプレイ GO!
Live2D主催イベント『alive 2023』申込み開始―リアル開催復活、トップクリエイターによる講演や懇親会も GO!
Epic Gamesストアは今後も「ゲーム無料配布」を継続! 新規ユーザー9,000万人以上を獲得した施策は「主要な推進力」GO!

「ドラゴンクエスト ユア・ストーリー」主人公の名前巡る裁判で「小説ドラゴンクエストV」著者の請求が棄却―東京地裁 GO!
『バトルフィールド 2042』無料プレイ&セールの影響で接続人数が大幅増加もサーバー容量でログインできない状況に―現在は改善へと取り組み中 GO!
「ガンダムメタバース」でガンプラのCADデータ漏えいか バンダイ「事実確認中」GO!