FC2ブログ
03 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 05

ハルシオンシステムの気ままBlog

株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

 

【ハルシオンブログ】ディレクトリを削除しようとしたらエラー 

はい。こんにちは。

さて、ちょっとプログラムからディレクトリを削除しようたときの話。
ディレクトリを消すのはこんなですね。
    Directory.Delete("Assets/DeleteTest");


しかしディレクトリの中にファイルが有るとこんなエラーが出ます。
「IOException: Directory Assets/DeleteTest is not empty」
空っぽじゃないよって怒られてますね。

ということでディレクトリの削除をする前に、中に入ってるファイルを全部消してあげればいいですね。
こんな感じで全部取ってきて削除します。
    string deletePath = "Assets/DeleteTest";
// ディレクトリ内のファイルを取得
string[] files = Directory.GetFiles(deletePath);
foreach(string file in files) {
// 読み取り専用とかの対策
File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);
}

Directory.Delete(deletePath);

これでディレクトリの中にファイルがあっても削除できます。

ディレクトリの中にディレクトリがある場合は、
    Directory.GetDirectories(deletePath)


で取れるのでディレクトリを全部取ってこの中も全部削除するとかする必要があります。
やることはそんなに変わらないので割愛。

ディレクトリを消すとかはそんなないは思いますが、こんな感じでできますよって話でした。
ではまたノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】新しい元号は「令和」。いや、違うUnityHub入れてみました。 

こんにちは。坂内っす。
ついに新元号の発表ですね!
一体何になるんでしょうか?

「令和」になったようです!
来月から令和元年ですね。

そしてシステム屋の皆さん頑張ってください!

さて、UnityHubみなさん使ってますか?

今僕のPCには以下のUnityが入ってます。
・Unity 5.4.0f3 (64-bit)
・Unity 5.5.0f3 (64-bit)
・Unity 5.6.0f3 (64-bit)
・Unity 2017.3.0f3 (64-bit)
・Unity 2018.1.4f1 (64-bit)
・Unity 2018.1.6f1 (64-bit)
・Unity 2018.1.8f1 (64-bit)
・Unity 2018.2.0b1 (64-bit)
・Unity 2018.2.0f2 (64-bit)
・Unity 2018.3.0f2 (64-bit)
・Unity 2018.3.8f1 (64-bit)
・Unity 2018.2.10f1 (64-bit)



はい、管理がめんどいです。

もう5系とか使わないでしょうに・・・・・ちょっと前まで4系も入ってましたが・・・・


ということで、Hub入れてみましょう!

Unityの公式からダウンロードできます。


さて、起動するとこんな画面。



「Installs」で使うUnityをインストールorインストール済みのフォルダを選択

これで、UnityHubからプロジェクトを開くと、インストールされているバージョンで勝手にプロジェクトを開いてくれるようになりました。

皆さんも是非UnityHubつかってみてね!

あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】Linqを使ってリストをランダムに並び替える 

こんにちは。

桜も咲いてだいぶ春めいてきましたね。
週末には満開みたいですが、関東は天気がいまいちですね。。
まぁお花見はしないですけど。

さて、今週もネタがないので適当なやつ。
Linqでリストの順番をランダムにするだけ・・・。

「using System;」、「using System.Linq;」を追加しないと使えないのでお忘れなく。
    List list = new List();
for(int i = 0; i < 10; i++) {
list.Add(i);
}
// ランダムに並び替え
list = list.OrderBy(a => Guid.NewGuid()).ToList();

foreach(int i in list) {
Debug.Log(i);
}

これだけですねー。
結果はこんな感じ


それでは今週もこれにてノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】UnityでScriptableObjectを作成して、使う方法の紹介。なんか使いやすいように使ってください! 

こんにちは。ハルシオンシステムですっ!

UnityでScriptableObjectを使い、マスタデータ的な感じでデータを使う方法ってあるじゃないですか。

それを簡単にやってみたいと思います。

①ScriptableObjectのコードを作成

[TestData.cs]
using UnityEngine;

[CreateAssetMenu(fileName = "TestData",menuName = "ScriptableObjects/MakeTestData")]
public class TestData : ScriptableObject
{
public int testNo;
public string testName;
public int testAge;
}


こんな感じで、testNo、testName、testAgeを持たせたTestDataクラスを作成します。

クラスの前にCreateAssetMenuというのがありますが、これは実際のScriptableObjectを作成する時に使う設定です。
これを書くことで、UnityのオブジェクトをCreateする場合に、menuNameに書かれた項目が出るようになります。



MakeTestDataを実行すると、以下のようなTestDataという名前のScriptableObjectができます。



②ScriptableObjectに値を入れる



こんな感じで、値を入れてみました。

③コードからScriptableObjectのデータを使用

[Script20190325.cs]
using UnityEngine;

public class Script20190325 : MonoBehaviour
{
[SerializeField]
private TestData testData;

void Start()
{
Debug.Log(testData.testNo + " : " + testData.testName + " ; " + testData.testAge);
}
}


TestDataには先ほど作成した、ScriptableObjectをアサインします。




これで実行すると、こうなる。


(みずらい!)

こんな感じでScriptableObjectは用意し、使うことができます。


マスタデータのように使うんだったら、ScriptableObjectの方はこんな感じにした方がいいと思いますが。

[TestData.cs]
using System.Collections.Generic;
using UnityEngine;

[CreateAssetMenu(fileName = "TestData",menuName = "ScriptableObjects/MakeTestData")]
public class TestData : ScriptableObject
{
public List<TestEachData> testDatas = new List<TestEachData>();

[System.Serializable]
public class TestEachData {
public int testNo;
public string testName;
public int testAge;
}
}


こうすることで、Listとして管理できます。



使う時はこうですね。

[Script20190325.cs]
using UnityEngine;

public class Script20190325 : MonoBehaviour
{
[SerializeField]
private TestData testData;

void Start()
{
foreach(TestData.TestEachData data in testData.testDatas) {
Debug.Log(data.testNo + " : " + data.testName + " ; " + data.testAge);
}
}
}




まぁ好きなように使ってやってください。

ということで、ScriptableObjectの作り方と使い方の紹介でした!

あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】2DSprite、SpriteRendererの形によってPolygonCollider2Dをフィットさせたい!そんな時はこう! 

はい、こんにちは。

月曜日、ブログの時間がやってまいりました。

2DのSpriteRendererでキャラを作り、アニメーションをさせます。
このキャラにぶつかり判定のColliderを付けようと思うと、こうなってしまいます。

いや、全然これでもいいんですけどねw



付けたのは、PolygonCollider2D。

でもちょっと、キャラの形に合わせてColliderも動かしたいですよね。

そんな時に便利なのがこのアセット!

Advanced Polygon Collider
https://www.gameassetdeals.com/asset/52265/advanced-polygon-collider



なんと無料!!


①Advanced Polygon Colliderをインポート

②スプライトのRead/Write Enableにチェックを入れる
アニメーションで使うすべてのSpriteにチェックを入れてください。



③PolygonCollider2Dの付いているSpriteにAdvancedPolygonColliderのコンポーネントを追加


④SpriteにAdvancedPolygonColliderの値をいじって、キャラにフィットさせる



⑤SpriteにAdvancedPolygonColliderの「Run In Play Mode」にチェックをいれる

これで、SpriteにフィットしたPolygonCollider2Dの完成です。




こんな感じで、こちらのアセットを使うと簡単にSpriteにフィットしたColliderを作ることができるみたいです!

ということで、本日は簡単なアセットの紹介でした!

あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0