• ゲーム
  • Industry
  • リソース
  • コミュニティ
  • 学習
  • サポート
開発
Unityエンジン
任意のプラットフォーム向けに2Dおよび3Dゲームを構築
ダウンロードプランと価格
収益化
アプリ内課金(IAP)
ストア全体でIAPを発見し、管理する
Mediation
収益を最大化し、マネタイズを最適化する
Ad Quality
アプリのユーザーエクスペリエンスを保護する
Tapjoy
長期的なユーザーの忠誠心を構築する
すべてのマネタイズ製品
詳しく見る
詳しく見る
発見され、モバイルユーザーを獲得する
UnityベクターAI
プレイヤーを適切なゲームに接続する
Auraのオンデバイス広告
ピークエンゲージメント時にデバイス上のユーザーにリーチする
すべての成長製品
活用事例
3Dコラボレーション
リアルタイムで3Dプロジェクトを構築およびレビューする
没入型トレーニング
没入型環境でのトレーニング
顧客体験
インタラクティブな3D体験を作成する
すべての業界ソリューション
業界
製造業
運用の卓越性を達成する
小売
店内体験をオンライン体験に変換する
自動車
革新と車内体験を高める
全業界
技術ライブラリ
ドキュメント
公式ユーザーマニュアルとAPIリファレンス
開発者ツール
リリースバージョンと問題追跡
ロードマップ
今後の機能をレビューする
用語集
技術用語のライブラリ
インサイト
ケーススタディ
実際の成功事例
ベストプラクティスガイド
専門家のヒントとコツ
すべてのリソース
新機能
ブログ
更新情報、情報、技術的ヒント
お知らせ
ニュース、ストーリー、プレスセンター
コミュニティハブ
ディスカッション
議論、問題解決、つながる
イベント
グローバルおよびローカルイベント
コミュニティストーリー
Made with Unity
Unityクリエイターの紹介
ライブストリーム
開発者、クリエイター、インサイダーに参加する
Unity Awards
世界中のUnityクリエイターを祝う
すべてのレベルに対応
Unity Learn
無料でUnityスキルをマスターする
プロフェッショナルトレーニング
Unityトレーナーでチームをレベルアップ
Unity初心者向け
スタートガイド
学習を開始しましょう
Unityエッセンシャルパスウェイ
Unity は初めてですか?旅を始めましょう
ハウツーガイド
実用的なヒントとベストプラクティス
教育
学生向け
キャリアをスタートさせる
教育者向け
教育を大幅に強化
教育機関向けライセンス
Unityの力をあなたの機関に持ち込む
認定教材
Unityのマスタリーを証明する
サポートオプション
ヘルプを得る
Unityで成功するためのサポート
Success Plan
専門的なサポートで目標を早く達成する
FAQ
よくある質問への回答
お問い合わせ
私たちのチームに連絡する
プランと価格
言語設定
  • English
  • Deutsch
  • 日本語
  • Français
  • Português
  • 中文
  • Español
  • Русский
  • 한국어
ソーシャル
通貨
購入
  • プロダクト
  • Unity Ads
  • サブスクリプション
  • Unity Asset Store
  • リセラー
教育
  • 学生
  • 教育関係者
  • 教育機関
  • 認定資格試験
  • 学ぶ
  • スキル開発プログラム
ダウンロード
  • Unity Hub
  • ダウンロードアーカイブ
  • ベータプログラム
Unity Labs
  • ラボ
  • 研究論文
リソース
  • Learn プラットフォーム
  • コミュニティ
  • ドキュメント
  • Unity QA
  • FAQ
  • サービスのステータス
  • ケーススタディ
  • Made with Unity
Unity
  • 当社について
  • ニュースレター
  • ブログ
  • イベント
  • キャリア
  • ヘルプ
  • プレス
  • パートナー
  • 投資家
  • アフィリエイト
  • セキュリティ
  • ソーシャルインパクト
  • インクルージョンとダイバーシティ
  • お問い合わせ
Copyright © 2025 Unity Technologies
  • 法規事項
  • プライバシーポリシー
  • クッキーについて
  • 私の個人情報を販売または共有しないでください

「Unity」の名称、Unity のロゴ、およびその他の Unity の商標は、米国およびその他の国における Unity Technologies またはその関係会社の商標または登録商標です(詳しくはこちら)。その他の名称またはブランドは該当する所有者の商標です。

Hero background image

プログラミング経験がある方の Unity でのスクリプティング

Unity を初めて使用するプログラマー向け

Unity では、スクリプトを使用してゲームやその他リアルタイムインタラクティブコンテンツのほとんどの部分を開発できます。Unity では C# でのスクリプティングに対応しており、Unity で C# スクリプトを設計する方法は主に 2 つです。1 つは、最も幅広く採用されている従来型のオブジェクト指向設計です。もう 1 つはデータ指向設計で、Unity では特定のユースケースにおいて、高パフォーマンスでマルチスレッドに対応した新しい Data-Oriented Technology Stack(DOTS)を介して設計できるようになりました。

  • C++ での開発経験があり Unity を使い始めた方
  • Unity のゲームオブジェクトとコンポーネント
  • Unity でのコンポーネントのスクリプティング
  • DOTS によるデータ指向設計の利点
  • 最新ハードウェアを最大限活用する
  • Unity でのデバッグ
  • Unity のスクリプティングバックエンド
  • エディターの拡張による Unity のカスタマイズ

C++ での開発経験があり Unity を使い始めた方

Unity は業界標準の言語である C# をサポートしています。C# は Java や C++ と似ているところがあります。

C++ と比べて、C# は簡単に習得できます。また、C# は「マネージド言語」、つまり、メモリの割り当てと割り当て解除やメモリリークの解消などのメモリ管理を自動的に行ってくれます。

一般に、先にゲームを制作してから、後でプログラミングの高度な側面を扱う場合は、C++ よりも C# が推奨されます。

詳細はこちら
Unity APIドキュメントを参照
Unity のゲームオブジェクトとコンポーネント

Unity のゲームオブジェクトとコンポーネント

Unity で開発されたすべてのゲームプレイとインタラクション機能は、次の 3 つの基本的な構成要素に基づいて構築されています。ゲームオブジェクト、コンポーネント、変数。

ゲームのあらゆるオブジェクトは、ゲームオブジェクトから始まります。キャラクター、ライト、特殊効果、小道具など、ゲーム内のすべてのオブジェクトはゲームオブジェクトです。

コンポーネント
ゲームオブジェクトはそれ単独では何もできません。実際に何か意味のあるものにするには、ゲームオブジェクトにプロパティーを指定する必要があります。そのためには、コンポーネントを追加します。

コンポーネントは、それがアタッチされているゲームオブジェクトの動作を定義して制御します。簡単な例として、ライトの作成が挙げられます。ライトを作成する際には、ゲームオブジェクトに Light コンポーネントをアタッチします(以下参照)。また、Rigidbody コンポーネントを追加すると、オブジェクトが落下するようになります。

コンポーネントには、Unity エディターのインスペクター ウィンドウやスクリプトを介して調整できる、 編集可能なプロパティまたは変数がいくつもあります。上記の例では、ライトのプロパティーとして範囲、色、輝度があります。

Unity でのコンポーネントのスクリプティング

Unity の組み込みのコンポーネントは非常に汎用的ですが、独自のゲームプレイロジックを実装するには、組み込みのコンポーネントが提供するものだけでは物足りないことに気付きます。これを行うには、スクリプトを使用して独自のゲームロジックと動作を実装し、その後それらのスクリプトをコンポーネントとしてゲームオブジェクトに追加します。各スクリプトは、組み込みのクラスから派生する MonoBehaviour と呼ばれるクラスを実装することで、Unity の内部の動作と結び付けます。

スクリプトコンポーネントを使うと、ゲームイベントのトリガー、衝突のチェック、物理演算の適用、ユーザー入力への反応など、非常に多くの事柄を実行できます。詳細については、Unity のスクリプティング API を参照してください。

DOTS で構築された『Megacity』のデモ

DOTS によるデータ指向設計の利点

従来のゲームオブジェクトとコンポーネントの概念は、プログラマーでもプログラマー以外でも理解しやすく、直感的な UI を簡単に作ることができるため、引き続きうまく機能します。ゲームオブジェクトに Rigidbody コンポーネントを追加するとオブジェクトが落下するようになり、Light コンポーネントを追加すると光が放出されるようになります。他にもいろいろなことができます。

ただし、コンポーネントシステムはオブジェクト指向フレームワークをベースに設計されており、開発者にとって進化し続けるハードウェアのキャッシュやメモリを管理するうえで課題が生じます。

コンポーネントもゲームオブジェクトも、「重い C++」オブジェクトです。すべてのゲームオブジェクトには名前があります。それらのコンポーネントは、C++ コンポーネントをベースとする C# ラッパーです。これにより取り扱いが簡単になりますが、最終的に構造化されていない方法で格納されてしまう可能性があるため、パフォーマンスが犠牲になることがあります。その C# オブジェクトは、メモリ内であればどこでも存在する可能性があります。また、C++ オブジェクトもメモリ内であればどこでも存在する可能性があります。連続したメモリ領域でグループ化されていません。処理のために CPU で読み込まれるたびに、すべてを複数の場所からフェッチする必要があります。低速で非効率になる可能性があるため、ワークアラウンドのためにさまざまな最適化を必要とします。

これらのパフォーマンスの問題に対処するために、私たちは高パフォーマンスでマルチスレッドに対応した Data-Oriented Technology Stack(DOTS)(現在プレビュー中)により、Unity のコア基盤を再構築しています。

DOTS により、最新のマルチコアプロセッサーをゲームに効率的かつフルに活用できます。次の機能で構成されています。

  • マルチスレッドコードを効率的に実行する C# Job System。
  • 高パフォーマンスのコードをデフォルトで記述する Entity Component System(ECS)。
  • 高度に最適化されたネイティブコードを生成する Burst コンパイラー。

DOTS における新しいコンポーネントシステムは ECS です。従来のオブジェクト指向においてゲームオブジェクトでやっていたことを、この新しいシステムではエンティティを使用して行いいます。コンポーネントは引き続きコンポーネントと呼びます。最大の違いはデータレイアウトにあります。詳細については、ブログ記事「DOTS について:エンティティコンポーネントシステム」。

DOTS で構築された『Megacity』のデモ

最新ハードウェアを最大限活用する

ECS の使用は、設計の面からより優れたゲームプログラミングへのアプローチとなる以外に、Unity の C# Job System と Burst コンパイラーを生かす理想的な立場に置かれるため、最新のハードウェアを最大限に活用することができます。

DOTS のマルチスレッドシステムを使用すると、さまざまなハードウェアで実行されるゲームを作成できます。また、これまでより多くの要素やより複雑なシミュレーションを導入して、さらに素晴らしいゲームの世界を構築できます。代わりに、高性能なコードによってプレイヤーのモバイルデバイスの温度コントロールとバッテリ寿命を最適化できます。オブジェクト指向のアプローチからデータ指向の設計に移行することで、コードを再利用したり、他の人がコードを理解して変更を加えたりすることが簡単になります。

DOTS の一部のテクノロジはプレビュー中であるため、開発者の方には、プロジェクト全体を構築するためではなく、プロジェクト内のパフォーマンスに関連する具体的な課題を解決するために DOTS を使用することをお勧めします。このページ下部の「その他のリソース」セクションから DOTS の主なリソースにアクセスできます。

パフォーマンスを最適化するための Unity プロファイラ―

Unity でのデバッグ

Unity では、コードを 1 行も書くことなく、その場で変更を加えられるように、開発者のプレイ中にすべてのゲームプレイ変数がただちに表示されるため、調整とデバッグを効率的に行えます。ゲームを任意のタイミングで一時停止することも、コードを 1 行ずつステップ実行することもできます。

Unity での最適化についてより詳しく学べる便利なリソースをいくつか紹介します。

Profiler

Profiler Analyzer

Memory Profiler

Unity における最適化

グラフィックパフォーマンスの最適化

一般的なベストプラクティス(Unity の UI システムの最適化に関する幅広いヒントを含む)

Unity のスクリプティングバックエンド

収益.NET:Unity では、スクリプティングのために、C# をネイティブでサポートする標準的な Mono ランタイムを実装しています。Unity では現在、macOS については MonoDevelop-Unity の代わりに Visual Studio for Mac を配布しています。Windows 版の Unity では、Visual Studio を配布しています。

Unity の .NET 4.6 スクリプティングランタイムでは、C# 6.0 以降で利用できる、数多くのエキサイティングな C# の新機能とデバッグ機能がサポートされています。また、C# の新機能に伴い、素晴らしい C# IDE 体験が得られます。

IL2CPP:IL2CPP:Unity が開発したスクリプティングバックエンドで、一部のプラットフォームのプロジェクトを作成するときに、Mono の代わりに使用できます。IL2CPP を使ってプロジェクトを作成する場合、Unity は選択したプラットフォームのネイティブバイナリファイル(.exe、apk、.xap など)を作成する前に、スクリプトからの IL コードを変換し、C++ コードに組み立てます。

IL2CPP は、iOS と WebGL 用にビルドするときに唯一利用できるスクリプティングバックエンドであることに注意してください。

エディターの拡張による Unity のカスタマイズ

Unity では、標準のエディターに組み込まれたインスペクターやシーンなどのウィンドウと同様に動作する独自のカスタムウィンドウでエディターを拡張できるため、非常に柔軟にプログラミングを行うことができます。独自のツールを Unity に追加することで、チーム固有のワークフローとニーズを満たすのをサポートし、最終的に効率性を高めます。

その他のリソース

ゲームを DOTS に変換する

ゲームを DOTS に変換する

ビデオを見る
DOTS で構築された『Megacity』のデモ

DOTS に関するドキュメント

詳細はこちら
Unity 開発プラットフォームに含まれるツールとサービス

Unity のリアルタイム 3D プラットフォームの概要

詳細はこちら