Defold 引っ越しガイド(From Unity)
Unity ユーザーのためのDefold 移行ガイドみたいなものが無いなと感じ、
Unity 引っ越しガイド | Unreal Engine ドキュメント
Epic Games 公式の Unreal Engine への移行ドキュメントが読み易く刺激されましたので、Defold 版を書いてみます。当記事は Unity からの引っ越しを想定して書いています。色々比較してみると面白いかも。
目次
比較するエディターバージョン
Unity | 2.10f1 |
Defold | 1.2.164 |
エディタ
以下はUnity Editor(左)とDefold Editor(右)とのレイアウト比較です。機能別に色分けしています。呼称は違いますが構造は似ています。
アセットの編集
Unity では Inspector タブで Scene や Project 内で選択したアセットを編集しますが Defold では Assets 内で選択したアセットを編集します。
GameObject は*.go ファイルとしてオブジェクトの構造をアセットとして保存します。Unity における Prefab の様なものと考えると分かりやすいでしょう。リソースとして読み込み、インスタンス化できます。
用語比較
カテゴリ | Unity | Defold |
ゲームプレイ タイプ | Component | Component |
Game Object | Game Object | |
Prefab | Game Object(*.go) | |
エディタUI | Hierarchy | Outline |
Inspector | Properties | |
Project | Assets | |
Scene | Collection | |
マテリアル | Material | Material |
シェーダ(ShaderLab) | シェーダ(GLSL) | |
エフェクト | Shuriken (パーティクルシステム ) | Particle FX |
UI | UI | Gui |
プログラミング | C# | Lua |
スクリプト | スクリプト | |
物理 | Raycast | Raycast, Physics |
Rigidbody | Collision Object | |
実行時プラットフォーム | iOS Player, Web Player | iOS, Android |
アセットを入れる場所は?
Defold では各プロジェクトに Assets フォルダがあります。ここにゲームアセットを格納します。ゲームアセットを格納するためにはプロジェクトの Assets フォルダにドラッグ&ドロップします。格納時点でUnity と異なる点は格納時にmeta ファイルを生成しない点です。
Defold のプロジェクトを新規作成するとbuiltins, input, main のフォルダが自動的に作られます。これらとは別途リソースの置き場所としてdatas などとしてフォルダを作作成し、そちらに格納したアセットをまとめておくのも良いでしょう。
サポートされるファイル形式は?
アセットタイプ | サポートするファイル形式 |
テクスチャ | PNG, JPEG |
モデル | Collada DAE |
サウンド | wav, ogg |
フォント | TrueType, OpenType, BMFont |
2Dアニメーション | Spine |
スクリプト | Lua |
Spine は標準でサポートされている点はメリットです。Unity だとプラグインを取り込む必要がありますが Defold では不要ということになります。
シーンの保存方法は?
Unity では GameObject をシーン配置しアセットファイルとして保存していました。Defold も似ていてGameObject を .Collection ファイルに配置しアセットファイルとして保存します。
プロジェクト設定の変更方法は?
game.project ファイルを開くと入力関連を除いたプロジェクトの全ての設定へアクセスできます。
縦に長く項目数が多いので省略しますが、画面解像度や各プラットフォーム毎にアプリアイコンの設定、生成できるスプライトのインスタンス限界数など一通りの設定が .project ファイルで設定出来る様になっています。
ソースファイルの場所は?
Unity では Assets フォルダにScriptsフォルダなどを置いてそこに格納していました。 Defold でも 同様に scripts フォルダなどを作成し格納することが可能ですし、割り当てるGameObject と同じディレクトリへ格納するのも良いでしょう。ソースファイル .script ファイルで書式は Lua です。
.script ファイルはダブルクリックすると Defold Editor で編集できます。
GameObject はどこ?
Unity ではGameObject は Scene に配置可能なモノとして扱っていました。Defold でも同様に GameObject は Collection に配置可能なモノとして扱います。
コンポーネントは?
Unity と同様にコンポーネントを GameObject に追加し機能を加えます。例えばscript コンポーネントを GameObject (.go)に追加する場合、Outline から[Game Object] を右クリック > [Add Component File] から script コンポーネントを追加します。
追加できると Outline に script コンポーネントが、Properties に選択しているコンポーネントの詳細が表示されます。
MonoBehaviour はどこ?
Game Object に .script コンポーネントを追加したのなら、その .script が Unity で言う「MonoBehaviour を継承したモノ」となります。
イベント関数の記述
Unity C#
public class Startup : MonoBehaviour
{
int count = 0;
void Start()
{
count = 0;
}
void Update()
{
Debug.Log(count);
count++;
}
}
Defold script(Lua)
count = 0
function init(self)
count = 0
end
function update(self, dt)
print(count)
count = count + 1
end
言語の性質の差こそあれど、構造が似ていますね。
複合オブジェクトの構造
Unity では transform を親子付けして複合オブジェクトを構築します。
GameObject
|__Transform
| |__Transform
| |____Component_02(SpriteRenderer)
|
|____Component_01(SpriteRenderer)
|____Component_03(C# Script)
一方 Defold ではひとつの GameObject にレンダラー系のコンポーネントを複数付与することが出来ます。
GameObject
|__Component_01(Sprite)
|__Component_02(Sprite)
|__Component_03(Script)
GameObject 自身に Transform を含まず、Sprite コンポーネントなど表示用コンポーネントに位置、回転 などが含まれている形になっています。
まとめ
Unity のゲームエンジン経験者であれば、似ている点も多いので 2D ゲームを作る際の選択肢に含めても良いと感じています。