20200520のUnityに関する記事は4件です。

【超絶爆速メモ】テクスチャをタイル状にたくさん置く

x01.png
x02.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Windows版】Unityインストール方法 2020/05

概要

今回はWindowsのPCでUnityをインストールする際に、自分が経験した躓いたことや注意を踏まえた流れを書いたので是非参考にしてください。
この記事で、そのまま書いてある手順を踏めば、あら不思議。勝手に自分の手元にはUnityが扱えている状態になっていることでしょう。
所々の画像がMacになってたりしますが、やることは変わらないので気にせず進めてください。

まずは公式HPへ

Unityをいれるために、まずはインストーラーを用意します。
こちらのUnity公式HPに飛んでください。

UnityHubをいれよう

下の画像のようなページに飛ぶので、「Unity Hubをダウンロード」を押しましょう。
スクリーンショット 2020-05-17 20.44.31.png

そしたら、何かいろいろ出てくると思うので、はいとか同意する的なニュアンスの方をポチポチしていってください。
無事Unity Hubがダウンロードできたら早速起動してください。

すると環境設定の画面のライセンスという画面に飛びます。
もし画像の画面になっていなかったら右上の歯車マークを押すと行けると思います!
image.png

写真にはモザイクをかけてますが、入れたばかりの皆さんはまだ何も入ってないはずです。

UnityHubからUnityのアカウントを作成

次にライセンスを取得しましょう!!!…って言いたところですが、ライセンスを取得するためにはまずUnityにアカウントを作ってログインする必要があります。なので右下の『ログイン』というボタンからアカウントの作成を行いましょう。
下にボタンがない方は右上の歯車の隣にある人マークを押してアカウント作成まで進んでください。
そしたら下のような画像になるので『IDを作成』をポチります。
image.png

各項目のメールアドレス、パスワード、ユーザーネーム、フルネームを入力して利用規約のチェックボックスにチェックを入れてください。その下のチェックは付けなくていいです。(いわゆるメルマガを受け取るかどうかの話です。)
また、パスワードは頭文字が大文字なので注意してください!
image.png

無事入力が済んだら、『UnityIDアカウントを作成』をポチッ。

image.png
すると、登録しようとしてるメールアドレス宛てにUnityから本人確認のメールが届くと思うので、本人確認を行ってください。
無事確認が済んだら、早速ログインしてください。

image.png

ログインが完了すると、『新規ライセンスの認証』のボタンがアクティブ状態になりますので、そこをクリックしてライセンスを獲得しましょう。
選択肢はUnityPersonalを選びます。するとまた選択肢が増えるので、個人利用の場合は下を、どこか団体に所属している場合は上を選択します。
image.png

Unityを入れよう

ここからやっとUnityを入れることができます。
UnityHubの最初の画面に戻りましょう。そしたら、左の欄に『インストール』があるのでそこに移り、右上の『インストール』というボタンを押してください。
image.png

するとこんな画面が出ると思うので、バージョンを選びます。最新正式リリースの中の『Unity 2018.4.20f1 LTS版』というものを選びましょう。こちらはバグが少ないのでおすすめです。迷ったらこれを選べば間違い無いです。
image.png

ここで注意です!こんな画面に移ると思うので、モジュールというものを追加していきます。これが無いとビルドというものをするときに大変なことになってしまうのでしっかり確認しながら行ってください。(ぶっちゃけ後からでもできますが…)
WechatIMG12.jpeg

いろんなモジュールがありますが、用途に合わせて選んでください、AppStoreやGooglePlayにリリースするのであれば、AndroidとiOSにチェックを入れましょう!
そして、一番上にある『Microsoft Visual Studio Community 2017』は必ずチェックを入れてください!

そして次へを押すと、こんな画面が出ると思うので同意をして実行しましょう!早速Unityのダウンロードが始まります。
image.png

と同時にVisualStudioもダウンロードされます。途中でこんな画面が出ると思いますが、画像と同じものにチェックが入っていればOKです。(このダウンロードの時間の速さは人によって個人差があります。お菓子でも食べながら気長に待ちましょう。)
image.png

無事ダウンロードが終わるとこんな感じで表示れます。下のアイコンはiOSとAndroidのモジュールが入っている証拠になります。
image.png

早速Unityを起動してみよう!

ここまでお疲れ様でした。インストールの話はここまでですが、
一応おまけということでプロジェクトの作り方を軽く解説していきます。
下の画像のようにプロジェクトから『新規作成』を押します。
image.png

するとこんな画面になると思うので、作りたいゲームに合わせて2Dや3Dなどを選び、プロジェクト名を自分で入力します。保存先はわかりやすい場所やお好きな場所にどうぞ。
image.png

Visual Studio でエラー出たら。。。

Unity画面で上タブにある「Unity」の「Preference」をクリック
image.png

次に右タブの「External Tools」を選択して「External Script Editor」を『Visual Studio』にしましょう。
image.png

まとめ
普段はGeekSalonという大学生限定プログラミングコミュニティでメンターをしております。
もし興味ありましたらぜひ!!
?詳細はこちらから?
https://bit.ly/2UVZDJm
image.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Unity:C#】null条件演算子(?.)

null条件演算子
if文書かずに1行ですっきりするから結構使用してるんだけど

sample
Action callback;
callback?.Invoke();

Unityのオブジェクトに関しては使用してはいけない

sample
// 例として面倒だから定義直下で判定してるけどメンバ変数として持って使用してる場合を想定
GameObject gobj;
gobj?.name;

明示的にnull代入すればセーフだけど
どこかでGameObjectの参照が切れた場合
gobjには"null"が入ってる
nullではなくて"null"

これはnull条件演算子が対応してないので普通にnull参照でエラーになる
※厳密には「== null」での判定はUnity側がoperatorを拡張してくれているから判定できるらしい(そのうち?.も対応されるかも??)

Unityのオブジェクトには普通にnullチェックしよう

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Unity】ゲーム全体でデータを共有する方法【プレイヤーのHPとか】

筆者について

Unityは初心者。
C#は仕事で4年使ってます。

どういう記事?

色々なオブジェクトから参照される数値… 例えばプレイヤーのHP。
体力バーを表示したり、敵のAIに反映したり。

他にも、ゲーム全体の進捗率や、フラグなんかもほしいかもしれませんね。

どのように共有するか、悩みませんか?
お勧めの方法があります!:gift:

結論

Scriptable Objectがオススメです!
:thinking:ん?Scriptable Object? マスタ設定用機能では?

私もそう思っていました。
ただのマスタデータ設定用機能じゃないんです。

利点

依存関係が綺麗に整理できる
通常のスクリプトより軽い(コールバック少)
シーンを切り替えても値が引き継がれる

欠点

ScriptableObjectの特性を把握する必要があります。

※たとえば、スクリプトから値を修正すると、ゲームの再起動で値は元に戻りますが、
インスペクタから直接値を変えると、永続的に値が変わります。

全て紹介すると普通に記事が一本かけてしまうので、詳細は公式や他の記事にお譲りしたいと思います。

他の方法はダメ?

例としてプレイヤーのHPの場合

普通に作るとプレイヤースクリプトへの参照を保持する方法になると思いますが、
無駄な依存関係を生むのでお勧めしません。
HPだけでいいのに、ゲームオブジェクトへの参照やスクリプトへの参照が必要ですよね。
FindしたりGetComponentしたり、処理速度的にも不利だと思います。

その他、ScriptableObjectよりも良い方法があれば、ぜひ教えてください!

やり方

前置きが長くなりました。すみません。
いよいよ具体的な使い方です!

① Scriptable Objectを定義

普通にScriptを定義する時と同じような手順でOK!
※ScriptableObjectを継承します

GlobalFloat.cs
using UnityEngine;

[CreateAssetMenu]
public class GlobalFloat : ScriptableObject
{
    public float Value;
}

上記例では「Value」1つですが、複数のシリアライズフィールドを作成してももちろんOKです。

② Scriptable Objectを作成

さきほど [CreateAssetMenu] 属性を指定しているので、
プロジェクトウィンドウ内で右クリック ⇒ Create ⇒ Global Float で作成できると思います!
image.png

※Resourcesと名の付くフォルダ下に作るとスクリプトからロードできて便利
使っちゃダメらしいんですが便利なんだもん
image.png

③ インスペクターから設定 or リソースとして読み込みます。

まず、読み取ったり書き込んだりしたいスクリプトにさきほど定義した型のメンバを定義しましょう。

PlayerController.cs
using UnityEngine;

[CreateAssetMenu]
public class PlayerController : MonoBehaviour
{
    public GlobalFloat HP;
}

インスペクタから設定する場合は、いつも通りドラッグアンドドロップ!

image.png

リソースを読み込む場合(建前上使っちゃダメ)

PlayerController.cs
void Start()
{
    HP = Resources.Load<GlobalFloat>("PlayerHP");
}

どちらでもOKです!
他のクラスでも同じ共有変数にアクセスする場合、手順③を再度適用しましょう。

④ 読み取る / 書き込む

メンバのValueプロパティが共有データとなります!

PlayerController.cs
// 読み取り
Debug.Log(HP.Value);
// 書き込み
HP.Value = 100f;

参考

ScriptableObject を使用してゲームを構築する 3 つの方法
※Unity公式HowToの変数の設計と同じ内容です。

初見では、具体的な使い方がよく分からなかったので、
私なりにかみ砕き、スクリーンショットを添えて記事にしました。
次回は、同じ記事元の「イベントシステム」をご紹介したいと思います。

皆様のお役に立ちますように!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む