FC2ブログ
    11 «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.» 01

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

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

     

    【ハルシオンブログ】ちょっと便利なアセット「SuperEditor」の簡単な紹介。 

    こんにちは。坂内っす。
    だいぶ寒くなってきましたね。さすが12月。
    風邪ひかないように飲みにいきましょう。

    ちょっとしたアセットのおすすめ。



    「SuperEditor」というアセット。

    これを入れると何が起きるかというと、ヒエラルキーに異変が起きます。


    ヒエラルキーに見たことのないアイコンが・・・・?

    カーソルを合わせると、こんな感じに、そのオブジェクトについているコンポーネントが一目でわかるようになってます。



    画期的!

    さらにこんな感じで、コンポーネントのコードをクリックするとエディターまで開いてくれるという優れもの!



    というか、このエディターがこのアセットの本体ぽいです。

    エディタとしてふつうに使うくらいの機能はついてるようです。

    ちょっとした修正とか、このエディター使うといいかもしれませんね!

    というちょっと便利かもしれないアセットの紹介でした。

    あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】GameObjectを作成した際の座標を必ず(0,0,0)にしたいとき 

    こんにちは。
    大坂です。

    GameObjectを作成した際にすごい座標になってることがあります。


    これを必ず(0,0,0)にしたいとき。
    [Edit]-[Preferences]-[Scene View]-[Create Objects at Origin]をオンにするだけ。


    新しく作成したGameObject(0,0,0)になってますね。


    今週もちょっとしたことですがこれにてノシ

    Category: Androidアプリ紹介

    tb 0 : cm 0   

    【ハルシオンブログ】Unity2021からオブジェクトプールが公式で実装されてるぽいですね。試しに使ってみました。 

    坂内っす。
    めっさ寒くなってきましたね。
    ザ・冬って感じになってきました。
    風邪に気をつけましょう。

    以前オブジェクトプールについて書いたのですが
    http://halcyonsystemblog.jp/?q=%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%83%97%E3%83%BC%E3%83%AB&charset=utf-8

    Unity2021.1からちゃんとオブジェクトプールの機能があるぽいですね。
    なので、それの紹介を簡単にしてみたいと思います。

    IObjectPoolを使う感じぽいですね。

    [Blog20211129.cs]

    using UnityEngine;
    using UnityEngine.Pool;
    using UnityEngine.UI;

    public class Blog20211129 : MonoBehaviour
    {
    [SerializeField] GameObject objPref;
    [SerializeField] Button btnCreate;

    int defaultCapacity = 10;
    int maxSize = 100;

    public IObjectPool<GameObject> _pool;
    public IObjectPool<GameObject> pool {
    get {
    if (_pool == null) {
    _pool = new ObjectPool<GameObject>(CreatePoolItem, OnTakeFromPool, OnReturnedToPool, OnDestroyPoolObject, false, defaultCapacity, maxSize);
    }
    return _pool;
    }
    }

    /// <summary>
    /// プールオブジェクト生成
    /// </summary>
    /// <returns></returns>
    GameObject CreatePoolItem() {
    var go = Instantiate(objPref, new Vector3(Random.Range(-10f, 10), Random.Range(-10f, 10f), Random.Range(-10f, 10f)), Quaternion.identity);
    return go;
    }

    /// <summary>
    /// プールから取得するときに行う処理
    /// </summary>
    void OnTakeFromPool(GameObject go) {
    // 特になし
    }

    /// <summary>
    /// オブジェクトをプールに戻す時に行う処理
      /// 「Called when an item is returned to the pool using Release」
    /// </summary>
    void OnReturnedToPool(GameObject go) {
    // 特になし
    }

    /// <summary>
    /// オブジェクトをプールに戻す時に、容量上限に達している場合に行う処理
    /// </summary>
    /// <param name="go"></param>
    void OnDestroyPoolObject(GameObject go) {
    Destroy(go);
    }

    void Start() {
    btnCreate.onClick.AddListener(OnClickButton);
    }

    void OnClickButton() {
    int amount = Random.Range(10, 100);
    for (int i = 0; i < amount; i++) {
    var ps = pool.Get();
    }
    }
    }


    なんかちょっとめんどくさいですね。
    こんな感じで使えるらしいです。
    取り出す時に行う処理、プールに戻す時に行う処理、指定した数以上のオブジェクトをプールに戻す時に行う処理を初めに設定する感じぽいです。

    まだまだ謎は多いですが・・・これ自前の方が楽そうではありますよねぇ

    ということで、簡単にですが、Unity2021以降から使えるオブジェクトプールの説明でした。

    あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Prefab編集時のオートセーブ機能 

    こんにちは。
    大坂です。

    Prefab編集時にデフォルトだと変更をオートセーブするようになっていますが、配置とかをちょっと試したいだけとかの時にオートセーブをしない方法。

    「Scene」の「AutoSave」のチェックを外せばオートセーブしなくなります。


    Unity2020.2以降の機能でプロジェクトとしてオートセーブしたくないときは、
    [Editor]-[ProjectSettings]-[Editor]-[Allow Auto Save]のチェックボックスを外すとSceneのところのチェックボックスが触れなくなってオートセーブがされなくなります。





    オートセーブはしませんが、変更したものは「Save」ボタン押すか「Ctrl+S」で保存できます。

    基本的にはオートセーブをしてもらった方がいいときの方が多いと思いますが…。
    オートセーブしてほしくないときもあるかもしれないので紹介でした。

    ではまたノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】「●●分後に処理を行う」を簡単にやる方法。 

    こんにちは。坂内っす。
    音楽って難しいですね・・・・・
    芸術物って言葉にできない。
    どんな曲が欲しいのかを言葉にできない。
    この曲は何かが違う。でも何がどう違うかを言葉にできない。
    ゲームも同じですよね。
    何かが違うけど何が違うのかわからない。
    それでも今日もゲームを作り続ける。

    さて、Unityで「●●分後になったら▲▲をする」という処理を作るとき、こうやって書いてるけどメモ。
    もっといい方法あったら教えてくださいね。

    [Blog20211122.cs]

    using System;
    using UnityEngine;

    public class Blog20211122 : MonoBehaviour
    {
    DateTime dtimeProc;
    float timer;
    bool isAction;

    private void Start() {
    dtimeProc = DateTime.Now.AddMinutes(2);
    }

    void ActionProc() {
    // 処理
    }

    private void Update() {
    if (isAction) {
    return;
    }
    timer += Time.deltaTime;
    if (timer >= 1) {
    timer = 0f;
    // 1秒毎に判定
    if (DateTime.Now >= dtimeProc) {
    isAction = true;
    ActionProc();
    }
    }
    }
    }



    Startで「2分後」をセットし、Updateで1秒おきに2分後になったかのチェックをしています。
    2分後になったら、ActionProcメソッドを処理します。

    と、こんな感じで●●分後は .AddMinutesで指定できます。
    もちろん●秒後(AddSeconds)や、●時間後(AddHours)も設定可能。

    まぁただの時間設定なんですけどね・・・・・

    他にもInvokeで時間指定する方法もありますね。

    ってことで、簡単な「●●分後に処理を行う」についてでした。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0