Help us understand the problem. What is going on with this article?

突然仕事でUnity向けのSDKやPluginを作ることになった人向け資料<概要編>

More than 3 years have passed since last update.

はじめに

仕事でUnity向けのSDK/Plugin開発をやることになりました。
私自身はUnityを一年ほど扱ったことがあるのですが
「iOS, Androidの開発はあるけどUnityはやったことない!」
「趣味やったけど仕事で使ったことない!」
という方が意外と多い事に気づきました。意外とそういう書籍もなく、
「ここがわかれば仕事がスムーズに進むかも」
と思ったことをざっと書きます。

仕事をはじめる前に

マニュアルを読む

公式マニュアルは以下です。
http://docs.unity3d.com/ja/current/Manual/

対応バージョンを決める

2016年6月現在最新版のUnityは5.3.5で、Unity5.0.0の公開が2015年5月です。
4と5で仕様が大きく変わっているため新規作成の場合は5.xのみ対応で良いと思います。
(仕事によって変わると思うので個人的意見です)

過去のバージョンのUnityは以下からダウンロードできるので対応バージョンを複数ダウンロードしておくと良いと思います。
(ライセンスやサブスクリプションについては適時確認してください)
https://unity3d.com/jp/get-unity/download/archive

成果物を決める

SDKやPluginの場合、成果物は「.unitypackage」形式が一般的です。
プロジェクトビュー内で右クリック> Export Packageで簡単に作成できます。
また、ユーザが取り込む際も右クリック> Import Packageで取り込むことが出来ます。

スクリーンショット 2016-06-24 19.43.22.png

unitypackage内のプロジェクト構成について

SDK名をunitypackage直下のフォルダ名として使用するのが良いです。

スクリーンショット 2016-06-24 19.54.35.png

理由は以下です。
・import時の名前衝突を避ける
・ユーザが手作業でファイルを移動してしまうと次回SDK更新時に正しい差分表示がされずimportが面倒になるため

※ただしPluginsフォルダは例外としてAssets直下のPluginsフォルダに置くことになります。
http://docs.unity3d.com/ja/current/Manual/SpecialFolders.html

SDKが正しく動くことを確認するため1つ以上のデモシーンを準備すると良いと思います。

コード/開発について

コーディング規約

UnityScript開発はC#を使用します。
C#自体にはコーディング規約はなく、チームで決めることになると思いますが参考としてMicrosoftとMonoの規約を以下に貼ります。

https://msdn.microsoft.com/ja-jp/library/ff926074.aspx
http://www.mono-project.com/community/contributing/coding-guidelines/

コーディング規約のチーム共有

Unityに標準付属されているMonoDevelopにはカスタムポリシー機能でコードフォーマットを設定することが出来ます。
タブorスペース、括弧の位置、改行コードなど守りにくいルールをポリシー化することが出来ます。

(MonoDevelop-Unity >Custom Policyで設定)
スクリーンショット 2016-06-24 20.08.04.png

ドキュメントコメント

Unityの標準機能ではないのですが、
C#なので外部ツールのDoxygenやSandcastleなどでドキュメントコメントからドキュメント生成可能です。

http://www.doxygen.jp/
https://github.com/EWSoftware/SHFB/releases

バージョン管理ツールを使用する際の注意点

1ファイルにつき同名のmetaファイルが作成されます。
このファイルはバージョン管理化におかないとプロジェクトが壊れることがあります。
また、Unity上以外でファイルの更新や上書きをおこなうとmetaファイルと同期されないためプロジェクトが壊れることがあります。

http://docs.unity3d.com/ja/current/Manual/ExternalVersionControlSystemSupport.html

gitHubでは初期設定の際にUnity向けの.gitignoreが設定できます。

スクリーンショット 2016-06-24 20.16.35.png

ユニットテストについて

Unity5.3からユニットテストに関してNUnit標準搭載となりました。

ユニットテストの作成はAssets> Create >Editor Test C# Script
スクリーンショット 2016-06-24 22.50.03.png

ユニットテストの実行はWindow> Editor Test Runner
スクリーンショット 2016-06-24 22.51.12.png

また統合テストなどが必要な場合は
Unityから提供されているUnity Test Toolsを使用します。
https://www.assetstore.unity3d.com/jp/#!/content/13802

パッケージ作成の自動化

上の方にunitypackageは作成が楽と書きましたがUnity起動すら面倒なことがあります。
Unityはコマンドラインから実行可能よりJenkinsなどのCIツールにて自動化出来ます。
(2016年6月現在、Unity Cloud Buildではunitypackage出力には対応してないっぽいです)

以下はMacでUnityからunitypackageをexport出力する例となります。

/Applications/Unity/Unity.app/Contents/MacOS/Unity\
 -batchmode\
 -nographics\
 -projectPath {$PROJECT_HOME}\
 -exportPackage Assets/HogehogeSDK Assets/Plugins HogehogeSDK.unitypackage\
 -quit

Jenkinsを使用する場合、以下の様なUnity Pluginもあります。
https://wiki.jenkins-ci.org/display/JENKINS/Unity3dBuilder+Plugin

http://docs.unity3d.com/ja/current/Manual/CommandLineArguments.html

おわりに

別に知らなくてもUnity向けのSDKやPluginは開発できるのですが、
"仕事"では必須な「チーム開発」「テスト」「自動化」というあまり触れられない部分についてのざっと紹介でした。
今回書いてて気づいたことは、たいていのことは公式マニュアルに書いてあるということです(大事)
Unity初心者向け記事としては「趣味でゲーム開発」が多いので、
真逆の「仕事で非ゲーム開発」はあまり需要はないかもしれないですが参考になれば

つづく(かも

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away