레이블이 Unity3DJapan인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Unity3DJapan인 게시물을 표시합니다. 모든 게시물 표시

2013년 12월 17일 화요일

ExcelデータをXMLに変換する

シーンの保存やレベルデザインなどを作成するときにXMLを使用する場合があります。しかし、XMLを直接手で修正してみると作業が困難である。

Xcodeで作業するときも、これと同様の理由でplistを利用して作業をしました。再びその作業をしたくありません。

考えることも嫌いです。

この作業では、Excelは非常に便利です。

Excelを利用して簡単に作業をして、これをXMLに変換する方法についての記事を書いてみましょう。

一番最初にすることは、新しいメモ帳を起動します。

そして作りたいXMLのノード構成を作成する必要最小限の二つ以上は、作成する必要があります。
下のようにね。

以下は、idとtextというカラムを二つ持つデータを作成したものです。

  
    
    
  
  
    
    
  

今の拡張子をxmlに変更し、保存します。(test.xmlこのようにするとされます。)

そして、下図の順にしてください。





そうすると、メニュータブの「Developer」というメニューが出てきます。
ここでは、下の図のように「Import」と「Export」を使用して作業することになります。



これで、新しいドキュメントを作成し、上の図の「Import」を使用して、さっき作った「test.xml」を開いてください。

メッセージボックスが出ます。ただ、OKを押してください。

下の図のように出たら成功です。


ちなみに「Import」するときに、現在選択されている場所に「Import」になるから、目的の場所を選択して置いてください。

これで、目的のデータを入れて文書を修正し、「Import」の下にあった「Export」ボタンを押して保存していただく終わりです。

保存したファイルを開けてみれば、データが正しく入っています。


Unity3Dでコードを使用してパーティクルを開始および停止する方法

Unity3Dでパーティクルを作成して使用する際に必要に応じて再生したり、停止してくれることをコードで制御する方法です。

現在パーティクルを使用していないときに再生している必要はないのだから必要なときに再生させることです。

次の事項を考慮して製作します。


  1. 粒子は、ParticleSystem Componentを使用して製作します。
  2. パーティクルを停止するときに画面に消えるためには、Stop()およびClear()関数の両方を使用しします。
  3. パーティクルを開始するには、Play()関数を使用します。

サンプルコードは以下のとおりです。

ParticleSystem testParticle         = null;

// 버튼이 눌러졌을때
if (Input.GetMouseButtonUp(0) == true)
{
    // 파티클이 있고
    if (testParticle)
    {
        // 파티클이 재생중이면 재생을 멈추고 지워줍니다
        if (testParticle.isPlaying == true)
        {
            testParticle.Stop();
            testParticle.Clear();   

            //Debug.Log("STOP");
        }
        // 재생중이 아니라면 재생해주고요
        else
        {
            testParticle.Play();

            //Debug.Log("PLAY");
        }
    }
    // 파티클이 없다면 새로 만들어주구요
    else
    {
        Vector3 pos       = Vector3.zero;
        pos.y               = 3;
        pos.x               = 3 - 30.0f;

        Transform particleObject        = (Transform)Instantiate(Resources.Load("Prefabs/Effects/pfBlockBomb", typeof(Transform)), pos, Quaternion.identity);

        testParticle        = (ParticleSystem)particleObject.GetComponent(typeof(ParticleSystem));

        //Debug.Log("CREATE");
    }

    return;
}