タグ

ブックマーク / qiita.com/KyoheiOkawa (12)

  • Unityプロジェクトの外でコードを参照したくなった(Gitシンボリックリンク) - Qiita

    はじめに 普段Unityを使っているのですが、Unityに依存したくないツール(C#)を作りたいときは、Assetsディレクトリの外にプロジェクトを作る必要があります。(同じリポジトリの管理下) そのツールの中で、Unity側のコードを参照したいケースが出ました。 もちろん、UnityEngineに依存しているコードは使えないので、Util系などUnityに依存していないコードになります。 ファイルをそのままコピーしてもできますが、同じ内容の2重管理は良くないのでリンクさせたいと思いました。 そこで調べてみるとシンボリックリンクが使えそうでした。 環境はMacで書いています。 gitのシンボリックリンクの設定 はじめに、gitのシンボリックリンクの設定をOnにする必要があります。

    Unityプロジェクトの外でコードを参照したくなった(Gitシンボリックリンク) - Qiita
  • UnityMagicOnion導入方法(2023年最新) - Qiita

    はじめに MagicOnionを導入する敷居が高いと聞いていて、実際導入しようとしたら一発で導入できなかったので記事にまとめようと思いました。 出回っている情報でも古くなってしまっているので、2023年の最新バージョンということで書いていきます。 環境 クライアント Unity 2021.4.14f1 gRPC UnityPackage 2.47.0 MessagePack v2.4.59 MagicOnion v5.0.2 サーバー .Net 7.0 MagicOnion v5.0.2 その他 Rider 2022.3.1 Unityインストール Unityの設定 ProjectSettings/Player/Configuration Api Compatibility Levelを.NET Frameworkに設定 Scriptiong Backendは今回Monoにしていますが、I

    UnityMagicOnion導入方法(2023年最新) - Qiita
  • Unityでリバーシ(オセロ)を本気で設計してみた - Qiita

    はじめに アプリを開発する際、最初の設計が与える影響はとても大きいと感じています。 最初にしっかり設計を決めておけば、後々の開発が楽になるだけではなく、不具合も少なくすることができます。 業務でアプリを0から設計する機会はほとんどないので、今回は練習のためにリバーシ(オセロ)を題材にしっかり設計して作ってみようと思い立ちました。 もう一つの理由として、VContainerに触れてみたかったということもあります。 環境 Unity 2021.3.14f1 デモ デモ動画はこちらになります。 プロジェクトGitHubで公開しています。 使っているライブラリ VContainer UnityでDIを実現するためのライブラリです。 オブジェクトとオブジェクトの依存関係を減らして、それぞれ再利用しやすくするために利用します。 今回は詳細な使い方は書きません。 公式ドキュメントに分かりやすくまとめら

    Unityでリバーシ(オセロ)を本気で設計してみた - Qiita
  • Unityプログラミングパターン12種を公式デモから読み取る - Qiita

    2 OpenClosed(オープン・クローズドの原則) 機能拡張はいくらでもできるようにして、機能そのものの修正はできないようにする。 デモでは デモでは円や四角に対してそれぞれ面積を求めるための関数を用意せず、それらの基底クラスで面積を求めるための関数を用意しています。 このようにすることで、三角ができたとしても外部からは円や四角と同じ関数を呼び出すことで面積を知ることができます。 つまり、面積を求める機能に修正を加えることなく、それぞれの形ごとに計算方法を決めることができます。 3 LiskovSubstitution(リスコフの置換原則) オブジェクト指向プログラミングにおいて、サブタイプのオブジェクトはスーパータイプのオブジェクトの仕様に従わなければならない、という原則 (Wikipedia) スーパータイプ=基底クラス サブタイプ=派生クラス 捉えどころが難しい説明ですが、 基底

    Unityプログラミングパターン12種を公式デモから読み取る - Qiita
  • 3年間ソシャゲ開発に携わって、プログラムを書く上で大切だなと思ったこと - Qiita

    はじめに Unityを使用したソシャゲ開発・運用に関わって4年目になります。 そこで感じたプログラミングをする上で大切だと思ったことをピックアップしてまとめていきます。 あくまで私が感じたことなので、一般的に正しいとは限らないのでご了承ください。 大事だと思ったこと DRY(Don't repeat yourself) 同じ処理を何度も繰り繰り返し書かずに、共通化するということです。 とても当たり前のことですが、こちらを守るのは意外と難しいことだと感じています。 DRY守るのが難しい理由 他人がどこを共通化しているのか把握しきれない 自分が書いたコードでしたら、共通化した部分を覚えているのでそこまで難しいことはないかもしれません。 しかし、実際の開発で一人だけで書いていくことは少ないので、他人が共通化した部分を利用していく必要があります。 チーム開発ではDon't repeat yours

    3年間ソシャゲ開発に携わって、プログラムを書く上で大切だなと思ったこと - Qiita
  • UniRx勉強会〜実用例を見ながら〜 - Qiita

    はじめに UniTask勉強会を開いたのでその流れでUniRxの記事も書こうと思い3か月経過したのでさすがに執筆しようと思い立ちました。 細かく仕組みや概念の解説をするというよりかは、私がUniRx使ってコーディングするようになるまでのUniRxに対しての認識や考え・必要な知識をまとめていきます。 UniRxを勉強しようと調べると様々な記事が出てきますが、実際どういうときに使えるのか分からない内容が多いと思います。 実用例に焦点を置いていくので、これからUniRxを使っていこうと考えている方の参考になれば幸いです。 UniRxとは ReactiveExtensions(Rx)がC#にもともとありますが、Unityではそのまま使えないのでUnity用に拡張したものになります。 そもそもRxが何なのかという話も記事を通して書いていきます。 UniRxとは何なのか まず題に入る前に同じ処理を

    UniRx勉強会〜実用例を見ながら〜 - Qiita
  • Unity C#とC++間の配列・構造体の連携(備忘録) - Qiita

    はじめに 前回C++プラグインの各種プラットフォームのテンプレートを作成した記事を書きました。 配列と構造体の連携方法を備忘録として残します。 ソースは前回作成したテンプレートを元にビルドしていきます。 C++コード ヘッダー #ifndef SOURCE_LIBRARY_HPP #define SOURCE_LIBRARY_HPP #ifdef _WINDOWS #define _CRT_SECURE_NO_WARNINGS #define DLL_EXPORT __declspec(dllexport) #endif #ifndef _WINDOWS #define DLL_EXPORT #endif struct SampleStruct { int a; float b; char c; }; extern "C" { DLL_EXPORT void intArray(int* p

    Unity C#とC++間の配列・構造体の連携(備忘録) - Qiita
  • UnityC++プラグイン各種プラットフォームのテンプレート - Qiita

    はじめに C++で作成したプラグインをUnityで利用する方法は調べると出てきますが、複数のプラットフォームでの対応の仕方がまとまっている記事がなかったので今回まとめたいと思い立ちました。 主要なプラットフォームのテンプレートを作成してみました。 こちらのテンプレートはC#側に計算結果や文字列を渡して表示するだけのサンプルになります。 主要なプラットフォーム 何が主要なのかと言うのは私の主観になってしまいますが、ソーシャルゲームアプリを開発する上では以下のプラットフォームが対応されれば十分だと考えています。 Windows MacOS iOS Android ビルド周りに関しては、Windows以外はMacでのやり方で書いていきます。 C++のプラグインがなぜ必要なのか? 普段の開発で自前で実装することは少ないと思いますが、必要になる理由は大きく以下の2つがあるかと思います。 1.処理速度

    UnityC++プラグイン各種プラットフォームのテンプレート - Qiita
  • LiteDBとSQLiteのパフォーマンスを計測してみた(C#) - Qiita

    はじめに ソーシャルゲームのローカルリソースバージョンを管理する際にLiteDBSQLiteどちらが高速なのか気になったので、ベンチマークしてみることにしました。 ソーシャルゲームのリソースは運用が長くなると数が多くなり、管理するレコード数も増加していきます。 主に管理するデータはダウンロード済みかどうかとダウンロード済みの場合最新のリソースとバージョンがあっているかを確認するためのハッシュ値です。 アプリ起動時にすべてのリソースのバージョン確認、ダウンロードが一つ完了するたびにバージョン情報の更新がはいるので速度が重要になってきます。 今回の検証で使用したプロジェクトGitHubにあげておきました。 レコード数が100,10000,100000のケースで計測してみます。 Meanが平均時間になるのでこちらが一番重要な結果です。 使用パッケージ ベンチマーク LiteDB SQLite

    LiteDBとSQLiteのパフォーマンスを計測してみた(C#) - Qiita
  • UniTaskに対応したStateMachine、UniTaskStateMachineを公開しました! - Qiita

    UniTaskに対応したStateMachine、UniTaskStateMachineを公開しました!C#UnityUniTask はじめに UniTaskを利用することで、コールバックを減らしコードの可読性が上がり様々な恩恵を受けてきました。 しかし、RecycleScrollViewやStateMachine、BehaviorTreeなどAPIの戻り値がUniTaskになっていないサードパーティーのパッケージがほとんどです。 そこで今回はStateMachineを対応してみようと思い、UniTaskStateMachineを実装しました。 何が便利なのか? OnEnter,OnUpdate,OnExitの戻り値がUniTask StateMachineの詳細な説明は省きますが、以下のように戻り値がUniTaskで引数でCancellationTokenを渡すようにしています。 pub

    UniTaskに対応したStateMachine、UniTaskStateMachineを公開しました! - Qiita
  • UnityC# メソッドの属性とリフレクションの活用 - Qiita

    はじめに UnityMonobehaviourのフィールドにつける属性SerializeFieldや、SRDebuggerやRPCで見かけるメソッドについている属性など、 様々な箇所で利用されていますが、実際に自分で実装して使ってみたことがないので使い道を探るべく検証したのでこちらの記事に残したいと思います。 リフレクションとは リフレクションが使われている例として、Unity標準のコンポーネントであるButtonはインスペクター上でメソッド名を指定して、押下時にそのメソッドを呼び出すことができます。 PrefabのデータはYAML形式で書かれていて、対応箇所を調べてみると以下の指定になっています。 - m_Target: {fileID: 8920755020898028706} m_TargetAssemblyTypeName: UnityEngine.GameObject, Unit

    UnityC# メソッドの属性とリフレクションの活用 - Qiita
  • Unity2Dで地面に着地したかどうかを調べる方法 - Qiita

    サンプル 今回作成したサンプルはこちら からダウンロードできます。 今回使用したUnityのバージョンは2017.4.1f1です。 サンプルの操作方法 スペースキー:ジャンプ 左、右の矢印キー:左右の移動 ジャンプの処理を書く上で出てくる問題点 プレイヤーがジャンプするゲームを作る際に以下のような問題に遭遇すると思います。 無段階にジャンプできてしまう 床に着地したという判定はできたが側面にくっ付いた状態で無段階にジャンプできてしまう 私もゲームを作り始めたばかりの頃は上の問題に悩まされていました。 Unityの接地判定のとり方を聞かれ、 せっかくの機会だと思ったので記事にしようと思い書きました。 技術的な記事を書くのが初めてで分かりにくいところもあると思いますが、 この問題で悩んでいる方の手助けになることができれば幸いです。 サンプルコード using System.Collection

    Unity2Dで地面に着地したかどうかを調べる方法 - Qiita
  • 1