(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!超可愛い実写猫の戦略的オンラインカードゲーム!PC&スマホ両対応!

Download on the App Store Google Play で手に入れよう

なぜUnityを使い始め、9年間も使い続けているのか【Unity】【雑記】

はじめに

この記事はUnity Advent Calendar 2022(カレンダー1)の1日目の記事です。



ちなみにAdvent Calendarとはなんぞやという方は以下を参照の事。



今回参加したUnity Advent Calendarは、名前の通りUnityに関する技術的な内容の記事を書くものですが、

技術的な記事は常日頃書いているので、逆にUnityを使った事がない人向けの雑記っぽい

「自分がなぜUnityを使い始め、9年間も使い続けているのか」という内容にしてみました。

(”Unity のことならなんでも”と書いてあったので大丈夫なはず……!)


「Unity使ってみたいけど何が良いの?」みたいな方の参考になれば幸いです。


なお、UEを始め他のエンジンちょっと触ったぐらいしか経験がないので

他のゲームエンジンと比較しているわけではない点はご了承ください。


目次

  • はじめに
  • 目次
  • なぜ使い始めたか
  • 使い慣れている
  • 人気があるため情報量が多く、対応サービスも多い
  • 2D、3D、VRと色々なタイプのゲームが作れる
  • 色々なOS、プラットフォームに対応しているし、対応も早い
  • 仕事が多い
  • ゲーム開発用の素材や作業効率化ツールが豊富
  • 自分でも拡張しやすい
  • PVやスクショが作りやすい
  • おわりに


なぜ使い始めたか

続きを読む

SceneViewでマウス(トラックパッド)のボタンを離した時のイベント(EventType.MouseUp)が発生しない時の対処法【Unity】【エディタ拡張】

この記事でのバージョン
Unity 2021.3.11f1


はじめに

Unityエディタが再生してない時でもMonoBehaviourの各種メソッドが実行出来るExecuteAlways

シーンビューでイベントが発生した時を検知出来るSceneView.duringSceneGuiを組み合わせる事で

SceneViewでマウス(トラックパッド)のボタンを押した時を検知する事が出来ます。

using UnityEditor;
using UnityEngine;

[ExecuteAlways]//OnEnable等がUnityエディタを再生していなくても実行されるように
public class NewBehaviourScript : MonoBehaviour {

  private void OnEnable() {
    SceneView.duringSceneGui += OnScene;
  }

  private void OnDisable() {
    SceneView.duringSceneGui -= OnScene;
  }
  
  //シーン上でイベントが発生した
  private void OnScene(SceneView scene) {
    var currentEvent = Event.current;
    if (currentEvent == null) {
      return;
    }

    if (currentEvent.type == EventType.MouseDown) {//実行される
      Debug.Log($"マウスのボタン押した : 座標 {currentEvent.mousePosition}");
    }
    else if (currentEvent.type == EventType.MouseUp) {//実行されない
      Debug.Log($"マウスのボタン離した : 座標 {currentEvent.mousePosition}");
    }
  }

}


しかし、仕様かバグかは分からりませんが、なぜかマウスのボタンを離した時は検知出来ません。

今回はそんな時の対処法です。


対処法

続きを読む

返り値を複数返したい時や値のスワップ(入れ替え)をしたい時はTuple(タプル)がオススメ【Unity】【C#】

この記事でのバージョン
Unity 2021.3.11f1


はじめに

先日Unity公式のYoutubeチャンネルにC#のTuple(タプル)に関する動画が上がっていました。



自分は全然Tupleを使いこなせていなかったので、勉強がてら記事にまとめてみました!


Tupleとは

続きを読む

ExecuteInEditModeを使うとPrefabモードで再生した時に「Risk of unwanted modifications」と警告が出るので後継のExecuteAlwaysを使おうという話【Unity】【エディタ拡張】【属性】


この記事でのバージョン
Unity 2021.3.11f1


はじめに

UnityではExecuteInEditModeという属性をMonoBehaviourを継承したクラスに付ける事で、

プレイモード(Unityエディタ再生中)でなくともStartやUpdateを実行する事が出来ます。


using UnityEngine;

[ExecuteInEditMode]//プレイモードじゃなくてもStartやUpdateが実行されるように
public class NewBehaviourScript : MonoBehaviour {
    
    void Start(){
        
    }

    void Update(){
        
    }
    
}


しかし、この属性を付けたスクリプトをPrefabに付けると、

Prefabを開いてる状態で再生した時に以下のような警告が出るようになります。


Risk of unwanted modifications


The following scripts on the Prefab open in Prefab Mode use the [ExecuteInEditMode] attribute which means they may accidentally affect or be affected by Play Mode:

NewBehaviourScript, NewBehaviourScript

See the documentation for [ExecuteInEditMode] and [ExecuteAlways] for info on how to make scripts compatible with Prefab Mode during Play Mode.

不要な変更のリスク


Prefab Modeで開くPrefab上の以下のスクリプトは、[ExecuteInEditMode]属性を使用しているので、誤ってPlay Modeに影響を与えたり、影響を受けたりする可能性があります。

NewBehaviourScript, NewBehaviourScript。

プレイモード中にプレハブモードと互換性のあるスクリプトを作成する方法については、[ExecuteInEditMode] と [ExecuteAlways] のドキュメントを参照してください。
DeepL翻訳


これはExecuteInEditModeがPrefab Modeが生まれる以前の属性のためで、

Prefab Modeを考慮していないのが原因です。

なので、今後はExecuteInEditModeの後継(?)であるExecuteAlwaysを使うと良さそうです。



using UnityEngine;

[ExecuteAlways]//プレイモードじゃなくてもStartやUpdateが実行されるように
public class NewBehaviourScript : MonoBehaviour {
    
    void Start(){
        
    }

    void Update(){
        
    }
    
}


なおちょっと試した感じだと、ExecuteInEditModeと全く同じ感覚で使えました。



VRゲームのGPU/CPUパフォーマンスチューニング【Unity】【VR】【SYNC 2022】

はじめに

今回は『SYNC 2022』の講演の動画を見て勉強しつつ、

ついでに記事にまとめちゃおうという感じのやつです。


そして、題材にする講演は、

Meta Quest 2の性能を最大限生かしたリッチなグラフィックを実現するには」です!

今年9月にリリースしたVRゲーム『DYSCHRONIA: Chronos Alternate』エピソード1では、Meta Quest 2の性能の最大限に活かした大量の魚群パノラマを体験できます。背景のポリゴン数はシリーズ前作の『ALTDEUS: Beyond Chronos』の3倍以上の中、360度視界で光り輝く魚の群れや巨大なクジラが泳ぐ幻想的な世界のグラフィック表現を実現した方法をご紹介します。 技術的には、ハードでのパフォーマンス測定の結果を踏まえた、解像度やアンチエリアス等のバランス調整や、ブルーム表現を中心に解説します。

こんな人におすすめ:
・VR開発に興味をお持ちの方
・VRタイトルのグラフィック向上を目指されている方

受講者が得られる知見:
・Quest 2のパフォーマンス特性に沿ってリッチなグラフィックを表現するための知見

出演:
山本 順也 (MyDearest株式会社)
尾上 明広 (MyDearest株式会社)


なお、自分が気になった所を抜粋してまとめているため内容に抜けがある点はあしからず。


講演内容

続きを読む

Unity製のAndroidアプリ内で、レビュー依頼を表示する方法【Unity】【Android】

この記事でのバージョン
Unity 2021.3.11f1


はじめに

今回はUnityで作ったAndroidアプリ内で、レビュー依頼を表示する方法の紹介です!


ちなみにiOS用の記事も以前に書いていたりします。





Unity製のAndroidアプリ内で、レビュー依頼を表示する方法

続きを読む

UnityでAndroid向けにビルドした時にJAVA_HOME is not set and no 'java' command could be found in your PATH.とエラーが出た場合の対処法【Unity】【Android】

この記事でのバージョン
Unity 2021.3.11f1


はじめに

今回はタイトル通りUnityでAndroid向けにビルドした時に

JAVA_HOME is not set and no 'java' command could be found in your PATH.

とエラーが出た場合の対処法です。ちなみに自分はWindowsでビルドした時に発生しました。


対処法

続きを読む

Unityが開催した新イベント『SYNC 2022』の講演のうち65セッションが誰でも無料で見放題!【Unity】【イベント】【SYNC 2022】

はじめに

Unityが開催する新イベント『SYNC 2022』が10/25~26と2日かけて行われました!

ちなみにSYNCとはUnity関連のオンラインカンファレンスでUniteのオンライン版みたいなイメージです。



そしてのそのSYNCの講演のうち公開可能な物(と言ってもほぼ全部?)

UnityLearningMaterialsにて誰でも無料で見返す事が出来ます!


ちなみにこのブログの筆者であるkan.kikuchiも「継続を重視した個人ゲーム開発者の生存戦略」

という内容で登壇しましたのでぜひご覧になってみてください……!

こんな人におすすめ:
・個人でゲームを作って生きていきたい人
・なかなか始められない or 継続出来ない人
・挑戦もしたいが、安定感も欲しい人

受講者が得られる知見:
・運に頼らずに継続する事の大切さ
・リスクを減らす方法や、もしもの時の保険を作る方法
・モチベーションを管理する方法や、そもそもモチベーションに頼らずに継続する方法


この講演、Unityの話をしてないにも関わらず結構見てもらえたようで、

Twitter上だけでも色々と良い反応を頂けて、とても励みになりました……!



余談ですが動画の尺の都合上、紹介出来なかった生存戦略もまだまだあるので、

そのうち自分の戦略を網羅した記事でも書こうかなと思っていたりします。



Unity公式がデザイン(プログラミング)パターンの実装例をまとめたリポジトリを公開!【Unity】

はじめに

プログラミングにもよく使われる形式や手法、いわゆるデザインパターンというものがあります。



もちろんそれらはUnityでゲームを作る時にも使えるのですが、

具体的にUnityでどう実現したらいいのか(特に学びたての時は)悩む事もあります。


そんな悩みを解決するリポジトリ(プロジェクト)をなんとUnity公式がGitHubで公開しました!



ちなみにGitHubよう分からんという方は、Download ZIPからzipファイルをダウンロードするだけでOK。


ちょっと見た感じオブジェクトプールやシングルトンなど、よく使われるパターンが12種類

シーンのサンプル付きで入っており、勉強には良さげな感じでした。



日本語で指示を出すだけでプログラムを自動生成したり、コードを日本語で解説してくれたりするAIProgrammerはUnityのC#でも使える 【Unity】【AI】

この記事でのバージョン
Unity 2021.1.23f1


はじめに

巷では絵を描くAIが何かと話題ですが、




実はプログラムを書くAIもあったりします。



今回そのAIの一つであるAIProgrammerをUnityのC#で使ってみようという感じの記事です!



AIProgrammer

続きを読む