FC2ブログ
    10 «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.» 12

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

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

     

    【ハルシオンブログ】Unityのインターナルモードでスクショを撮ろう!インターナルモードってなに・・? 

    一気に寒くなってきましたね!
    でも明日明後日は暖かくなって、木曜くらいからさらに寒くなるとか・・・
    冬って感じがしてきました! 坂内っす。

    そういえばポケガ3のPVが完成間近です。お楽しみに!

    さて、Unityでゲームウィンドウのスクショを取ろうと思った時に、キャプチャー系のアセットを入れたりしていたのですが、裏技があるポイですね。

    インターナルモードというものがあり、そこで簡単にスクショをとることができるらしいです。


    この時ゲームウィンドウのサイズでスクショを取ってくれるようです。


    例えばこんな感じの画面を用意します。
    画面サイズを2960x1440にします。


    ①Help>About Unityを選択。
    Aboutのウインドウが出ます。


    ②「internal」とキーを打ち込みます。
    そうすると謎のアセットを読み込みが走ります。

    aboutのウインドウの左上に謎のピカピカ●が出てればinternalモードになっています。

    ③Window>Internal>Screenshot>Snap Game View Content
    でゲームウインドウをスクショとることができます。


    ContentExample00X.png

    というファイル名で保存されます。



    こんな感じで、画面サイズでスクショをとることができます。

    スクショを取り終わったらもう一度②を行ってインターナルモードはOFFにしておくといいらしいです。

    こんな技知りませんでした。

    スクショとる際にはつかってみよっと。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】DateTimeの変数を作ったときの初期値 

    こんにちは。
    大坂です。

    DateTimeの変数を作ったときに初期値ってどうしてますか?
    なんかnewして適当な日付ぶち込んでましたが、DateTime.MinValueなんてのがあるのでこっち使った方がいいんですかね。
    まぁどちらでも問題ない気はするのですが、なんとなくDateTime.MinValue使う方が書きやすいですかね。


    // 適当に値を入れる
    DateTime test_1 = new DateTime(2000, 1, 1);
    // MinValueを使う
    DateTime test_2 = DateTime.MinValue;

    Debug.Log($"test_1 : {test_1}");
    Debug.Log($"test_2 : {test_2}");


    結果


    MinValueだと「0001/01/01 0:00:00」が設定されるみたいです。
    比較して大きかったら値を変更するなどをよく使うので、その辺も問題なく使えますね。

    こんなのがあるんだという紹介でした。
    ではではノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】DoTweenのEaseはInspectorで試しながら決めると楽だよね。Easeのサンプルページと睨めっこしながらやるのは無駄です。 

    こんにちは。
    ポケガ3は年内に出そうと思ってたけど、やっぱり来年1月にリリースかなぁと思ってる 坂内っす。


    Unityでオブジェクトの動きを決める時(DoTweenで動かす)、Easeの動きのサンプルをどこぞかのサイトでみながらいくつか選んでたりしますか?

    そんな時、Easeをpublicにしてしまえば、実際の動きを試しながら探せますよ。

    ImageのXを動かすだけのコード

    [Blog20221121.cs]

    using UnityEngine;
    using UnityEngine.UI;
    using DG.Tweening;

    public class Blog20221121 : MonoBehaviour
    {
    [SerializeField] Button btnPlay;
    [SerializeField] Image imgObj;
    [SerializeField] Ease ease;

    private void Start() {
    btnPlay.onClick.AddListener(PlayMove);
    }

    void PlayMove() {
    DOTween.KillAll();
    imgObj.transform.localPosition = new Vector2(-250f, imgObj.transform.localPosition.y);
    imgObj.transform.DOLocalMoveX(250,2f).SetEase(ease);
    }
    }



    publicではなく、SerializeFieldにしてますが、EaseをInspectorでいじれるようにしてます。



    こんな感じでInspectorでEaseを選んで実行することで、目的の動きを簡単に探すことができます。

    基本ではありますが、開発が少しでも楽になればいいですよね。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Textureのインポート時間が長いとき 

    こんにちは。
    大坂です。

    Unityを使っていてTextureのインポート時間が長くてなかなか作業ができないときがあります。
    Textureを圧縮する作業が入って長くなるのですが、圧縮しない設定にしておけば待ち時間が少なくなるので設定しておくとよい感じです。

    設定は以下でできます。
    [File]-[Build Settings...]で「Asset Import Overrides」の「Texture Compression」を「Force Uncompressed」にする。



    「Asset Import Overrides」は最初閉じられているので気づきにくいですが、Unity2021.2くらいから増えてる機能みたいですので、使ってみてください。

    ではではノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】2-3年振りにデジゲーいってきたよ! 

    こんにちは。坂内っす。
    寒くなってきましたね!ようやく冬っぽくなってきました!
    今年もあと1か月半…はや
    頑張って生きていきましょう!


    さて、昨日はデジゲー2022に行ってきました。
    コロナの影響でここ2-3年行ってなかったので久しぶりのデジゲーになります。



    人多かったですね。
    それこそコロナ前と同じくらい人多かった。
    熱気がすごく体調が悪くなったのでささっと退出。

    いくつかのブースにお邪魔して挨拶させて頂きました。
    ささっと紹介。


    Achamothさんのブース
    新作「Spooky Salvage」を双子で制作中とのこと!

    Achamothさんの独特な世界観楽しみですね!


    ノナプルナインさんのブース
    相変わらずハイセンスハイクオリティーなブースですね。

    いつもながら凄いブース!


    湊あおいさんのブース
    横スクロールゴシックホラーアドベンチャー「琉奈と悪夢の館」と「モン娘ぐらでぃえーた」の出展。
    おいおい Switchでモン娘でちゃうんですか?おめでとうございます!




    ガンズターンさんのブース
    デッキ構築系RPG「綻びのアーキテクト」を制作中とのこと。
    チュートリアル触らせて頂いた!

    なかなか難しそうだけど、ちゃんと理解すると面白そう!

    というか、体調悪くてチュートリアルゆっくり読めませんでした!
    開発頑張ってくーさい!


    りるをさんのブース?
    「びはんとマルの森」その他の展示
    なぜかりるをさんがいなくて、椎葉さんが店番してた。


    途中からりるをさんかえってきたけどね!


    そして、Room6さんのブース

    なんで斜めなんでしょ・・・・見ずらい
    「ローグウィズデッド」の出展。
    めっちゃ人気のようでよかったです!

    あ、隣のあちゃさんのブース写真撮ってないや・・・・


    なんかもう体調悪くてこの辺で帰りたい感じがすごいでてた。
    全然まさしさんとも話せてないでしたね。

    隣にG-modeさんのブースもあって、竹下さんもいたけど全然話せなかった・・・・


    そして最後は
    Mr.GAMEHITさんのブースに挨拶いったら、ブラックサンダー頂いた。

    GAMEHITさんはゲームのPVとか広告用動画など、動画を作成している企業さん。
    今回のデジゲーのスポンサーもやってるということです。
    ポケガ3のPVも作ってもらってるので挨拶周りしてきました。

    他にも行きたかったブースあったんだけど、行けてないところが数件・・・
    また、次回いきましょう!

    ということで、今回のデジゲーも軽く見てきましたよ。
    やはり二日酔いでいくもんじゃないっすね。
    ほんとつらかった・・・

    ではこんな感じでまた来年もデジゲーいきまっしょい
    来年のデジゲーはまた100人くらいの飲みできるといいっすね。

    あでゅ~ノシ

    Category: その他日記

    tb 0 : cm 0   

    【ハルシオンシステム】ビルド時にシーンを自動保存 

    こんにちは。
    大坂です。

    ビルとするときにシーンの保存を忘れてそのままビルドして、あれ?って思ってもう1回ビルドして時間がかかるなんてことがあります。
    そんな時は設定でビルド時にシーンを自動保存するようにしておくと便利です。

    [Edit]-[preferences...]-[General]の「Auto-save scenes before building」にチェックを入れるだけです。



    自分みたいにシーンの保存を忘れる人はこれで少し、無駄がなくなるかもしれませんね!
    ではまたノシ

    Category: Androidアプリ紹介

    tb 0 : cm 0   

    【ハルシオンブログ】Unity(uGUI)でパスワードの入力チェックみたいなのを作ってみた。 

    こんにちは。
    先週月曜に歯医者だったのに、完全に忘れてました。坂内っす。
    ついに今週末デジゲー2022っすね。
    遊びにいってこよーっと!

    こちらのブログ毎日100人くらい見に来てくれてるらしいっす。
    ありがとうございます。
    常にネタ切れで中身うっすいブログですが、少しでもゲーム開発とかにお役に立てれば幸いです。
    という体で今日もなんか書こうと思います。



    さてさて、UnityのUIで、パスワードを入力するときにリアルタイムで文字列チェックする機能。

    こんなのを作ってみます。

    今回はTMPでInputField等を作成。



    コードはこちら

    [Blog20221107.cs]

    using UnityEngine;
    using TMPro;

    public class Blog20221107 : MonoBehaviour
    {
    [SerializeField] TMP_InputField inputFPass;
    [SerializeField] TMP_Text lblMark1;
    [SerializeField] TMP_Text lblMark2;

    void Start()
    {
    inputFPass.onValueChanged.AddListener(ChangeText);
    }

    void ChangeText(string str) {
    CheckLowerUpperCase(str);
    CheckLength(str);
    }

    void CheckLowerUpperCase(string str) {
    bool isUpper = false, isLower = false;
    for (int i = 0; i < str.Length; i++) {
    if (char.IsUpper(str[i])) {
    isUpper = true;
    }
    if (isUpper) {
    break;
    }
    }
    for (int i = 0; i < str.Length; i++) {
    if (char.IsLower(str[i])) {
    isLower = true;
    }
    if (isLower) {
    break;
    }
    }
    if (isUpper && isLower) {
    lblMark1.text = "〇";
    } else {
    lblMark1.text = "×";
    }
    }

    void CheckLength(string str) {
    if (str.Length >= 8) {
    lblMark2.text = "〇";
    } else {
    lblMark2.text = "×";
    }
    }
    }



    InputFieldのonValueChangedで、チェックをする感じです。
    CheckLowerUpperCaseでは大文字が1文字でも入っているか?小文字が1文字でも入っているかのチェックをします。
    CheckLengthでは文字数のチェックです。

    今回は簡単な文字列のチェックですが、ここをもっと厳格なチェックにすればいいんじゃないかな?
    onValueChangedでチェックをしているので、文字を書く度にチェックが入ります。

    と、こんな感じでTMPではチェックができます。

    TMPではなく、uGUIのInputFieldの場合でも同じくonValueChangedで文字の変更イベントが取れるのでそのまま使えますね。

    ということで、文字を入力するたびに文字列のチェックを行ったりする方法でした。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0