FC2ブログ
    04 «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.31.» 06

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

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

     

    【ハルシオンブログ】プレハブが使っているリソースを調べる 

    こんにちは。
    大坂です。

    プレハブが使ってるリソースを調べたいときは「Select Dependencies」を使うと便利です。

    使い方はプレハブ選択して右クリックして「Select Dependencies」を選択。


    選択するとプレハブに関連するリソースが確認できますね。


    最初に選択したプレハブがさらにプレハブを使ってるとそいつに関連したのも出てくるので、
    うまく使えばプロジェクトの整理とかにも使えるんですかね。

    ではまた来週ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】あれ?何回もこの記事書いた気がする・・・・GameObjectの子供オブジェクトをとる方法をいくつか紹介。 

    また寒い日、暑い日の切り替えの激しい時期になりましたね。
    雨ばかりでじめじめしていて生きにくい!
    坂内っす。

    Unityで子オブジェクトをとる方法はいくつかあります。

    こんな構成の時にどんなものが取れるかみてみましょう。



    objParentは一番親のObjectをアサインしています。

    ①GetChildを使う

    using UnityEngine;

    public class Blog20220516 : MonoBehaviour
    {
    public GameObject objParent;

    private void Start() {
    for (int i = 0; i < objParent.transform.childCount; i++) {
    Debug.Log(objParent.transform.GetChild(i).name);
    }
    }
    }




    GetChildを使うと、子供のオブジェクトが取れます。
    でも、子供までで孫とかは取れません。

    ②foreachを使う

    using UnityEngine;

    public class Blog20220516 : MonoBehaviour
    {
    public GameObject objParent;

    private void Start() {
    foreach (Transform child in objParent.transform) {
    Debug.Log(child.name);
    }
    }
    }



    foreachで取ってもGetChildと同じく、孫までは取れません。



    ③GetComponentsInChildrenを使う

    using UnityEngine;

    public class Blog20220516 : MonoBehaviour
    {
    public GameObject objParent;

    private void Start() {
    var childrens = objParent.transform.GetComponentsInChildren();
    for (int i = 0; i < childrens.Length; i++) {
    Debug.Log(childrens[i].name);
    }
    }
    }


    全部取れます。



    ④LinqのEnumerable.OfTypeを使う

    using UnityEngine;
    using System.Linq;

    public class Blog20220516 : MonoBehaviour
    {
    public GameObject objParent;

    private void Start() {
    var childrens = objParent.transform.OfType();
    foreach (Transform trn in childrens) {
    Debug.Log(trn.name);
    }
    }
    }



    直下の子供だけ取れました。

    ⑤LINQ-to-GameObject-for-UnityのLinqを使う
    https://github.com/neuecc/LINQ-to-GameObject-for-Unity

    Linq to GameObjectを使うと簡単に子供とか親とかを取れます。


    using UnityEngine;
    using Unity.Linq;

    public class Blog20220516 : MonoBehaviour
    {
    public GameObject objParent;

    private void Start() {
    foreach (GameObject trn in objParent.Descendants()) {
    Debug.Log(trn.name);
    }
    }
    }



    こんな感じで簡単にとれる。

    何回もうちの記事でかいてた気がするが、子供オブジェクトの取り方を数パターン書いてみました。

    メモ程度に

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Unityで作ったC#スクリプトの文字コード 

    こんにちは。
    大坂です。

    Unityのバージョンによって作ったC#スクリプトの文字コードがデフォルトで「utf-8」にならずになんだか面倒なときがあります。
    SourceTreeなどでファイルを上げるときに気づくことが多々あります…。そして直し忘れることも多々ありますorz

    解決方法はいくつかありますが、お手軽な方法の紹介。

    プロジェクト直下の「〇〇.sln」と同じ階層に「.editorconfig」を配置する。


    「.editorconfig」以下の内容を書く。

    root = true

    [*.cs]
    charset = utf-8-bom


    これだけです。
    毎回変換して面倒だなとか思ったことがあったら試しください。

    ではまたノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】UnityでAnalyticsを入れようと思ってFirebaseAnalyticsを入れたけど、よくわからんかったのでUnityAnalytivsにしてみた 

    ゴールデンウィークも終わりましたね。
    皆様いかがお過ごししましたでしょうか?
    3年振りになる緊急事態宣言ではないGWでしたね。
    これが続いて平常の世に戻って頂きたいと願い今日この頃。

    UnityでAnalyticsを導入しようかとFirebaseAnalyticsを入れてました。
    以下の感じでイベントログを設定していました。


    ///
    /// 街:道具屋でアイテム購入
    ///

    public void LogTownItemShop(string itemName) {
    FirebaseAnalytics.LogEvent(EVENT_TYPE_TOWN, EVENT_ACTION_TOWN_ITEMSHOP, itemName);
    }



    LogEvent(string name, string parameterName, string parameterValue)

    とのことで、パラメータとしてアイテム名を投げていました。

    こんな感じでログを取っていたのですが、Firebaseのコントロール画面で見てもパラメータが見れない・・・?

    Firebaseでこのイベントの画面を見るとこんな感じにはなるのですが、パラメータを見るところが分からない・・・



    見たいのはパラメータなんだけど。

    ということで、いまいち見方が分からなかったので、UnityAnalyticsにしてみました。

    導入自体はすごく簡単。

    UnityのServiceの中からAnalyticsをONにします。


    (なんでLegacy Analyticsなんだろう??)

    そして、コードのほうはこんな感じ。


    ///
    /// 街:道具屋でアイテム購入
    ///

    public void LogTownItemShop(string itemName) {
    Analytics.CustomEvent(EVENT_TYPE_TOWN, new Dictionary {
    { EVENT_ACTION_TOWN_BLACKSMITH, itemName }
    });
    }



    さぁ これでUnityAnalyticsに移行です。

    どんな感じにログが取れるかなぁ と




    ログは取れてますが、文字化けが・・・・・

    ということで、あとは文字化け対応すればできそうですね。

    色々試してみたいと思います。

    ということで、Analyticsを入れてみようと思ってるよー

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】GW真っ盛り!拡張メソッドつかってますか?簡単な拡張メソッドの作り方。 

    皆様GW如何お過ごしでしょうか?
    え?アプリ開発者にGWなんてない?
    まぁそういう方も多いですよね。
    私はがっつり休みます(ハルシオンは基本休日うごいてません)
    坂内っす。

    拡張メソッドって使ってますか?

    よくあるやつだと、Transform.positionのxに値を入れる時にこんな感じのことをやりますよね。


    Vector3 posi = gameObject.transform.position;
    posi.x = 100f;
    gameObject.transform.position = posi;


    めんど!ってなりますよね。

    そういう時にはこんな感じの拡張クラスを作っておくと簡単にpositionに値を入れることができるようになります。


    public static class TransformEx{
    static Vector3 v3;

    public static void SetPosiX(this Transform transform, float x){
    v3.Set(x, transform.position.y, transform.z);
    transform.position = v3;
    }

    public static void SetPosiY(this Transform transform, float y){
    v3.Set(transform.x, y, transform.z);
    transform.position = v3;
    }
    }


    こんな感じの拡張メソッドを用意すれば、xとyが簡単にセットできます。

    使い方はこんな感じ。


    using UnityEngine;

    public class Blog20220502 : MonoBehaviour
    {
    public GameObject obj;

    void Start()
    {
    obj.transform.SetPosiX(1f);
    obj.transform.SetPosiY(2f);
    }


    簡単にxとかyとか設定できるようになりましたね。


    ということで、簡単な拡張メソッドについでした。

    あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0