Unityに関連する記事です

◇バージョン管理とは?◇


 ファイルやプロジェクトを何度も更新していくなかで、必ず管理したいのがファイルの変更履歴です。
一般的なバックアップの方法とは異なり、Unityのプロジェクトは個人のPC内とクラウド上とで同期して管理を行います。

 「編集前の状態に戻して作業したい」、「別の方と共同で作業をしたい」、「コメントを残して管理をしたい」などの要望に応えるのが
Github(ギットハブ)SourceTree(ソースツリー)による「バージョン管理」です。

 プロジェクト単位で進捗の更新が出来るため、このバージョン管理を行うことでデータを安全に保存し、管理、共有化できます。
詳細については、それぞれのサイトがありますので、そちらを確認してみてください。

 ここでは、その利用方法をまとめます。


◇リポジトリ◇


 バージョン管理をするには、1つ1つのバージョンの情報(いつ、誰が、どこを、どのように変更したか)を保存しておく必要があります。

 その保存先のことを「リポジトリ」と呼びます。リポジトリでは、バージョン情報の履歴が保存されています。
変更履歴を管理したいプロジェクトフォルダなどをリポジトリの管理下に置くことで、管理下に登録したファイルの更新や変更を追跡することができます。
この追跡機能を利用することにより、プロジェクトフォルダ内のファイルの変更履歴を確認し、記録していくことができます。



 リポジトリには「ローカルリポジトリ」と「リモートリポジトリ」の2つの種類があります。
 
 「ローカルリポジトリ」とは、実際にバージョン管理下で作業を行うリポジトリのことです。自分のPCなどで作成される、プロジェクト単位のリポジトリのことを言います。
 
 「リモートリポジトリ」とは、チームでのリポジトリ共有やバックアップを目的として作られる、ネットワーク先のリポジトリのことを言います。
こちらもプロジェクト単位で作成します。
リモートリポジトリはクラウド上で保存されるため、メンバー間でのデータの共有ができるだけではなく、自分のPCのデータをクラウド上に保存しておくことにもなります。
 
 ここでは「誰か・いつ・何を変更をしたか」という情報の確認もできます。
 
 それぞれのメンバーがリモートリポジトリを共有し、そのデータをローカルリポジトリとして管理・変更をできるため
各自で更新したローカルリポジトリのデータをリモートリポジトリに反映することにより、追加のあったデータをメンバー全員で共有できます。


◇コミット(commit)とプッシュ(push)◇

コミット


 Gitでは1つのバージョン(変更履歴)のことを「コミット」と呼びます。また、コミットを作成することを「コミットする」と言います。
 
 1つ1つのコミット(変更履歴)には、様々な情報が入っています。


 
「リビジョン(数字と英文字の羅列のような値)」

 「コミットのバージョン番号」のことでコミットを指定するIDのような役割を果たします。


  
「コミットした人や日時」

 誰が・いつ・コミットを行ったのかを、誰もがいつでも確認できます。
 

「コミットしたときのファイル内容」

 コミットしたときのファイル内容がコミット情報に含まれているので、ファイルを元に戻したい場合やどんな変更を施したのかを後からでも確認できます。
 

「コミットのメッセージ」

 コミットの際の必須コメントとして、どういった内容で変更したかを簡潔にまとめて書き込みます。
日本語でメッセージを残しておいても問題ありません。
 

「1つ前のコミットのリビジョン」

 1つ前のコミットのリビジョンを持っているので、どのコミットから作られたコミットなのかを確認することができます。
リポジトリ内では、1つ1つのコミットが、自分より1つ前のコミットのリビジョン(バージョン情報)を持っているので、コミットが順番に連なるように変更履歴を管理できます。


プッシュ

 
 「プッシュ」とは、ローカルリポジトリの変更履歴(コミットの積み重ね)を「リモートリポジトリに反映させる」ことです。
リモートリポジトリに反映させることで各ファイルの情報が最新となり、チームの人たちと最新の開発状況や変更履歴などを共有することができます。
 
 基本的なGitでの作業の流れは下記のようになります。

 1.リモートリポジトリを作成する
 2.ローカルリポジトリの作成と設定を行う
 3.ファイルの作成・変更・削除をインデックス(ステージング)に追加する
 4.変更結果をローカルリポジトリにコミットする
 5.ローカルリポジトリをプッシュしてリモートリポジトリへ反映させる

 このうち、Gitで行う作業は、1のリモートリポジトリの作成です。2〜5はソースツリーで作業を行います。
 


 基本的には、小さい作業の単位でコミットを行い、ある程度作業がひと段落した時にプッシュをするのが一般的なやり方です。
 
 またコミットする際にはメッセージをコメントとして残しておくことにより、ログを追っていく際にどのような内容であったかのかを把握できます。

 変更されたファイルをコミットする前に、前回から今回までのコミットの間で行われていた内容のうち
変更されたファイルの中から、どのファイルをコミットに含めるかを選ぶ」ことができます。

 この保存対象のファイル群のことを「インデックス」といいます(インデックスは「ステージングエリア」とも呼ばれます)。
そのため、変更箇所のうち、今回はコミットしなくてもよい部分を省いて、必要な情報だけをコミットすることができます。
(毎回作業した内容のすべてを更新しなくてもよい、ということです。)


◇GitHub(ギットハブ)◇


 GitHubとは、現在最もポピュラーなGit(ギット)ホスティングサイトです。現在はMicroSfot社が経営しています。

 GitHubでは、プロジェクト1つ単位としてリモートリポジトリを作成し、プロジェクトのバージョン管理をチーム内で共有、バックアップ、公開することができます。
レビュー、Wikiなどのプロジェクト管理機能も充実しています。現在はプライベート(非公開プロジェクト)なスペースも一定量、無料で利用できるようになりました。


◇SourceTree(ソースツリー)◇


 SourceTreeはGitクライアントツールです。基本的なバージョン管理は、Gitの考え方と同様なので

1.リモートリポジトリを作成する
2.ローカルリポジトリの作成と設定を行う
3.ファイルの作成・変更・削除をインデックス(ステージング)に追加する
4.変更結果をローカルリポジトリにコミットする
5.ローカルリポジトリをプッシュしてリモートリポジトリへ反映させる

 という、同じ流れです。2〜5までの作業をソースツリーで行います。
このツールを使用してGitと連動することで、自分のPCのリポジトリのバージョン管理を行います。



 個人でもチームでも開発の際にはバックアップなどの対応が必要不可欠ですが、
バージョン管理をすることによって、プロジェクトをバックアップすることなく、いつでも変更履歴をたどることでやり直しができます

 こまめにコミットをすることで、データの履歴を時系列で保存し、作業が一区切りついたらプッシュします。
この繰り返しを行いながら、1つのゲーム(サービス)を完成させていきます。


◇Unityプロジェクトの設定方法◇


 Unityで制作したプロジェクトをバージョン管理する方法です。

 まず、Unityのプロジェクトが開いたら「メニュー → Edit → Project Settings → Editor」を選択します。
右側の項目を確認し、「Asset Serialization」下にある Mode を「Force Text」に変更します。すでにその設定になっている場合は、変更せずに大丈夫です。


Project Settingsウインドウ画像


 これでUnity側の設定は完了です。


◇バージョン管理の手順◇


1.リモートリポジトリを作成する
2.ローカルリポジトリの作成と設定を行う
3.ファイルの作成・変更・削除をインデックス(ステージング)に追加する
4.変更結果をローカルリポジトリにコミットする
5.ローカルリポジトリをプッシュしてリモートリポジトリへ反映させる

 それでは、「1.リモートリポジトリを作成する」から順番にやっていきます。


1.リモートリポジトリを作成する


 Githubにアクセスします。
https://github.com/


Github ログイン前のトップページ画面




 画面右上部の Sign in を押してログインします。
Githubでログイン情報を求められたら、作成して頂いたアカウントでログインをしてください。


Github画面 ログイン





 ログインに成功したら画面が更新されて、マイページの表示になります。
画面の右上にある「+」マークをクリックし、New Repositoryで、新しくリモートリポジトリを作成します。


New Repositoryを選択




 Create a New Repositoryの画面が開くと、新しいリポジトリの名前などを設定し、リポジトリを作成するための手続きができる画面になります。
Owner(自分のアカウント名)の右側にある「Repository name」が空白ですので、ここに、「管理したいUnityのプロジェクト名」と同じ名前を入力して設定します。
別の名前にしてもよいですが、どのプロジェクトのリポジトリであるのか分かりやすく設定してください。

 他の設定はそのままで問題ありません。


Create New Repository画面



 入力が終わったら画面の下部にある「Create Repository」ボタンをクリックします。

 これで無事、Unityのプロジェクトのリモートリポジトリの管理画面が完成です。



 Githubの管理ページのトップ<Code>というタブ内に「Set up in Desktop or HTTPS 」の項目がありますので
画像のように「HTTPS」を押下した状態にします(すでになっていれば、そのままで大丈夫です。)

 その横に「https://github.com/~.git」で始まるアドレスがありますので、それをコピーします。(アドレスの最後にあるボタンを押してもコピーはできます。)

Github画像 リモートリポジトリ



2.ローカルリポジトリの作成と設定を行う

2−1.ローカルリポジトリを作成する

 ここでは、リモートリポジトリとローカルリポジトリを連携させます。
ローカル(自分のPC)にローカルリポジトリを作成し、それをリモートリポジトリ(Githubの作成したもの)にプッシュできるようにします。



 「SourceTree」アプリを立ち上げ、ローカルリポジトリを作成します。

 ローカルリポジトリで管理したいUnityのプロジェクトを指定します。
[Create a Repository]というウインドウメニューが開きますので
ボタンメニューの「Create(プラスの形のアイコン)」をクリックしてリポジトリ作成します。


<手順動画>
動画ファイルへのリンク



 保存先のパスの横にある「参照」をクリックしてください。
その後、フォルダ選択画面が立ち上がるので、Unityのプロジェクトのフォルダを指定して「フォルダーの選択」をクリックします。

ソースツリー Create




 Create a Repositroyの画面に戻り、選択したプロジェクトの名前が入っていると思いますので
その下を「Git」にし、「次のアカウントでリポジトリを作成」のチェックマークを外してから「作成」をクリックします。

 「出力先ディレクトリのエラー」という警告ウインドウが開いた場合、「Yes」を押します。

 これで画面が切り替わり、ローカルリポジトリが作成されます。
 

2−2.ローカルリポジトリの設定を行い、リモートリポジトリと連携する

 ローカルリポジトリが作成されると、下記の画面が表示されます。
画面の左にある WorkSpace の項目を ファイルステータスを押して切り替えます。


ソースツリーの操作



 ファイルステータスの画面のうち、左下に一覧になっているのがローカルリポジトリの中身(作成したファイル群)です。

ソースツリーのローカルリポジトリ




 このファイル群を、先ほどGitHubで作ったリモートリポジトリと連携させます。右上の「設定」をクリックします。

設定ボタン




 「リポジトリ設定」のウインドウが開きますので、タブを「リモート」にし、左下の「追加」ボタンをクリックします。
「追加」ボタンをクリックするとさらに「リモートの詳細設定」ウィンドウが開きます。


リモートの詳細設定ウィンドウ


 「リモート名」は「選択しているUnityのプロジェクト名」を入力します。(リモートリポジトリ、ローカルリポジトリと同じ)

 「URL/パス」には、先ほどGitHubでリポジトリを作った際にコピーを残しておいたURL(https://github.com~.git)をコピーして貼り付けて入力します。
必ず自分のアカウントのリポジトリURLを使ってください。

 「ホストタイプ」は「Github」にし、「ルートURL」はそのままにします。(自動的に入る場合には確認のみしてください。)

 「ユーザー名」は「Githubのユーザー名(アカウント)」にします。(自動的に入る場合には確認のみしてください。)

 これで「OK」をクリックします。


2−3.不要なファイルをリモートリポジトリへコミットしない設定を行う

 作成されたローカルリポジトリの中にあるファイルには、管理不要なファイルが多く含まれています
そのため、このままコミットをすると無駄なファイルまで管理することになってしまいますので
それらの管理不要なファイルを追跡対象とせず、管理しないで済むように設定をします。


 
 設定はソースツリーで行います。

 再度、右上の「設定」をクリックします。「リポジトリ設定」のウインドウが開きますので、
タブを「詳細」にして「リポジトリ固有の無視リスト(.gitignore)」の「右横にある編集」ボタンをクリックします。

 Windowsの場合ですと、メモ帳かテキストエディタが開きます。(どちらも開かないようであれば、テキストエディタを開いてください)
下記の無視ファイルリストをコピーして、白紙のメモ帳(テキストエディタ)のファイルに貼り付けてください。

 最後にしっかりと「保存 」してメモ帳(テキストエディタ)を閉じてください。

.gitignore (無視ファイルリスト Unity 用 2023.3月 現在) 100行 下記の内容をコピーして貼り付けてください。

<= クリックすると開きます


 ここで指定しているフォルダやファイルの拡張子は、Unityによって自動生成される管理不要なファイルのパスや拡張子のリストです。
これらのフォルダやファイル群は Unity を起動した際にチェックが入り、足りないファイルを自動的に生成して補完します。
そのため、リポジトリで管理する必要がないものとなります。
逆に言えば、自動的に補完してくれないファイル群を漏れなくリポジトリで管理しておく、とも言えます。


 下記のサイトも確認しておくとよいでしょう。

Unity 公式の gitignore(2021年12月時点で推奨している設定内容)
https://github.com/github/gitignore/blob/master/Un...



 ウインドウを閉じて SourceTreeに戻ると「.gitignore」ファイルがインデックス内に追加されています。
選択すると、画面の右側に追加したファイルの種類が確認できます。

 以上でファイルの作成・編集は完了です


3.ファイルの作成・変更・削除をインデックスに追加する


 先ほどの手順で管理不要なフォルダやファイルを設定すると、ソースツリーの作業ツリーのファイルの中から
不要なフォルダとファイルが見えなくなり、管理すべきフォルダとファイルのみが抽出されます。
1つの判断基準としては、Library フォルダが見えなくなっていれば大丈夫です。



 作業ツリーに表示されている各ファイルの左側にアイコンが表示されています。
まだ1回もコミットしていないフォルダやファイルには青い?のアイコンがあります。
コミット済ですでに Git の追跡対象のファイルは黄色い鉛筆のアイコンがあります。






 ここで実際にコミットする対象のファイルを選択します。
ローカルでのみ管理している情報の中から、リモートに保存したいファイルを選択する作業になります。

 ファイルの右側にある + ボタンを押すと、コミットの対象となり、作業ツリーの上部にあるウインドウに移動します。
この上のウインドウを インデックス(ステージングエリア) といい、ここに登録することをステージするといいます。
インデックスにステージされているファイルのみがリモートのリポジトリに送信されて保存されます。
そのため、下部の作業ツリーにあるファイルは送信対象外ということになります。 



 コミットの確認の意味も込めて、まず最初は .gitignore という、作業ツリーの一番上にあるファイルのみを選択してインデックスに追加してください。

 ファイルをコミットするには(変更を加えた場合も含む)は、変更作業を行ったファイルを
作業ツリー内から上部のインデックスにステージするという作業が毎回必要になります。


4.変更結果をローカルリポジトリにコミットする


 作成・変更・追加したファイルをインデックス(ステージングエリア)にステージさせましたので「コミット」を行います。

 コミットを行う前に、画面下部にあるコミットメッセージの入力欄を記入します。
ここに今回コミットする内容(変更内容や新規作成時初めてのコミットの内容など)を入力します。

 コミットメッセージの書き方については、下記のような書き方を参考にしてください。(日本語で問題ありません。)
開発の現場に携わる場合は、チームでの開発を行うケースが多いと思いますので、誰が読んでも内容を把握できるような書き方が推奨されます。

<記述の参考テンプレート>
1行目:コミットのタイトルや概要(20〜30字程度)。ただし、省略でも構いません。
2行目:コミットの詳細な内容(1行あたり50字前後以内、複数行に分けても問題ありません。)

 なお2行目を空欄として改行し、3行目に詳細内容を書いても良いです。



 コミットメッセージの入力が終わったら「右下にあるコミット」ボタンをクリックします。
あるいは画面左上にあるコミットアイコンを押します。どちらでも問題ありません。


コミットボタン


コミットボタン



 これでコミット完了です。


5.ローカルリポジトリをプッシュしてリモートリポジトリへ反映させる


 コミットが終了したら、最後にプッシュを行います。
コミットだけではリモートリポジトリには情報は反映されません。
イメージとしては、コミットして送信するファイル群を設定し、プッシュすることで送信を行う、という形です。



 画面上部にあるプッシュボタンを押すとプッシュウインドウが開きます。

 プッシュ先が、自分の作成したリモートリポジトリの URL になっているかを必ず確認してください。
この設定先が間違っていると送信先を間違えてしまうため、正常にプッシュが行えません。

 確認後、プッシュするブランチの左下にある master の対象ボックスにチェックを入れます。





 初めてのプッシュ場合、githubへのログインの入力がうながされますので自分のアカウントとパスワードを入力します。

 Commitingウインドウの「詳細を表示」を押して、待ちます。
無事にコミットとプッシュが終了すると「完了しました」と表示されます。ウィンドウを閉じてください。



 プッシュが完了したら、ソースツリーの右上にあるリモートボタンを押してください。
該当する Github のリモートリポジトリの管理ページに移動できます。

 リモートリポジトリの管理ページに「コミットメッセージやプッシュされたファイル」があれば成功しています。





 その上は「1 commit 1branch」と回数が更新されているはずです。



更新作業と注意点


 以上の手順がバージョン管理の手順になります。

 次回以降に同じプロジェクトでバージョン管理を行う場合には、ソースツリーの同じリポジトリを選択します。

 1と2の手順は不要ですので、3〜5までの手順を行います。コミットとプッシュを繰り返して、作業をバージョン管理します。

 前回のコミットから修正のあったファイルが表示されますので、必要なファイルを選択してステージングを行います。
そしてコミットメッセージを書いてコミット、プッシュを行います。Githubを確認してプッシュが正常に終了しているかを確認しましょう。



 注意点ですが、「全てインデックスに追加」というボタンを押すとファイルがインデックス(ステージングエリア)に移動します。
1つのファイルで10MBを超すファイルの場合、「大容量ファイルを検出しました」と警告ダイアログが出て、
10MB以上のファイルがgitのファイル管理下に入ることを警告します



 コミットとプッシュには容量制限があります。
1回辺りのコミットのファイル容量は、合計 100 MB 以下になるようにしてください。
100 MB以上になるとコミットは出来るものの、プッシュができません

 そのため、1つ辺りのファイルの大きさももちろんですが、複数のファイルをまとめてコミットする場合には、そのファイルの総容量に注意してください。
例えば、あまりに大きいフォルダの内容などは、フォルダ内にあるファイルを複数回に分けてコミットするようにしてください。

 この操作により、変更作業を行ったファイルがステージングエリア(上段)へ移動します。
このとき、ファイルの容量とファイル数によりステージするまでに時間がかかることもあります。

 プッシュの際も同様で、コミットしたファイルの容量によっては大量のファイルをアップロードすることになるので
そのサイズにより時間がかかります(数分前後)。



 画面の下部に「変更をすぐに [プロジェクト名/master] へプッシュする」というチェックボックスがあります。
こちらにチェックを入れておくと、コミットと同時に GitHubのリモートリポジトリにも自動的にプッシュできますので
手動でプッシュ作業を行わなくても良くなります。

 ただし最初のコミットは手動でプッシュを行うようにした方が安全です。

 このチェックボックスの利用にあたっては、最初のコミットとプッシュが正常に通って
リモートリポジトリにデータの送信が出来たのを確認してから利用するようにしてください。


コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

3Dトップビューアクション(白猫風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます