Defold 引っ越しガイド(From Unity)

2020/07/12Defold, DEVELOP

Unity ユーザーのためのDefold 移行ガイドみたいなものが無いなと感じ、

Unity 引っ越しガイド | Unreal Engine ドキュメント

Epic Games 公式の Unreal Engine への移行ドキュメントが読み易く刺激されましたので、Defold 版を書いてみます。当記事は Unity からの引っ越しを想定して書いています。色々比較してみると面白いかも。

目次

比較するエディターバージョン

Unity 2.10f1
Defold1.2.164

エディタ

以下はUnity Editor(左)とDefold Editor(右)とのレイアウト比較です。機能別に色分けしています。呼称は違いますが構造は似ています。

Unity Editor(左) と Defold Editor(右)とのエディター画面比較

アセットの編集

Unity では Inspector タブで Scene や Project 内で選択したアセットを編集しますが Defold では Assets 内で選択したアセットを編集します。

GameObject * . go ファイルを編集しているところ

GameObject は*.go ファイルとしてオブジェクトの構造をアセットとして保存します。Unity における Prefab の様なものと考えると分かりやすいでしょう。リソースとして読み込み、インスタンス化できます。

用語比較

カテゴリUnityDefold
ゲームプレイ タイプComponent Component
Game ObjectGame Object
PrefabGame Object(*.go)
エディタUIHierarchyOutline
InspectorProperties
ProjectAssets
SceneCollection
マテリアルMaterialMaterial
シェーダ(ShaderLab)シェーダ(GLSL)
エフェクトShuriken (パーティクルシステム ) Particle FX
UIUI Gui
プログラミングC#Lua
スクリプトスクリプト
物理RaycastRaycast, Physics
RigidbodyCollision Object
実行時プラットフォームiOS Player, Web PlayeriOS, 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 です。

main.collection に空の GameObject を追加し、main.script を割り当てた。

.script ファイルはダブルクリックすると Defold Editor で編集できます。

初期テンプレートが記述されている。

GameObject はどこ?

Unity ではGameObject は Scene に配置可能なモノとして扱っていました。Defold でも同様に GameObject は Collection に配置可能なモノとして扱います。

コンポーネントは?

Unity と同様にコンポーネントを GameObject に追加し機能を加えます。例えばscript コンポーネントを GameObject (.go)に追加する場合、Outline から[Game Object] を右クリック > [Add Component File] から script コンポーネントを追加します。

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 ゲームを作る際の選択肢に含めても良いと感じています。

お知らせ

Posted by kazupon