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やらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】画面のスクリーンショットを作成するときにエラーが出たお話 

    こんにちは。
    大坂です。

    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    画面のスクリーンショットを作成するコードでエラーになったときのお話
    こんな感じのコードでスクリーンショットを作成したい時。

    void Start()
    {
    CreateScreenShot();
    }

    private void CreateScreenShot()
    {
    Texture2D ss = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
    ss.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
    ss.Apply();

    var filePath = Path.Combine(Application.temporaryCachePath, "img.png");
    File.WriteAllBytesAsync(filePath, ss.EncodeToPNG());
    }


    実行するとエラーとなります。
    「ReadPixels was called to read pixels from system frame buffer, while not inside drawing frame.」

    解決策は「WaitForEndOfFrame」を使ってスクリーン上のレンダリングが完了するまで待てばエラーが出なくなります。
    コルーチン使って待つだけですが一応コードです。

    void Start()
    {
    StartCoroutine(CreateScreenShot());
    }

    private IEnumerator CreateScreenShot()
    {
    yield return new WaitForEndOfFrame();

    Texture2D ss = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
    ss.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
    ss.Apply();

    var filePath = Path.Combine(Application.temporaryCachePath, "img.png");
    File.WriteAllBytesAsync(filePath, ss.EncodeToPNG());
    }


    これでエラーが出なくなります。
    同じエラーが出たら試してみてくださいまし。

    ではではノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】UnityのSceneにあるToolsが消えてしまった時に、再度出す方法。(間違えて消したりしませんか? 

    こんにちは。坂内っす。
    来週GWですね!ごーるでんういーく的なやつ!
    まぁカレンダー通りにしか休みませんが。


    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:



    最近Unityで開発をしていて、toolsを消してしまった際に・・・
    (消してしまって困った人います?)

    toolsってこれね。



    どうやって再度出すのかはまったのでメモしときます。

    Sceneのタブを右クリック>OverLay Menu>Toolsをクリック



    こんな感じで出し直すことができます。

    これほんと色々探しました・・・・
    そんなところで出すなんてね・・・・

    以上、ではあでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】スクリプトからUIを選択状態にするとき 

    こんにちは。
    大坂です。

    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    スクリプトからUIを選択状態にしたいときのお話。
    「EventSystem」の「SelectedGameObject」を使用するとできます。

    [SerializeField]private TMP_InputField test;

    private void Start()
    {
    EventSystem.current.SetSelectedGameObject(test.gameObject);
    }


    こんな感じですね。指定するのは「GameObject」です。
    ButtonとかToggleなど「Selectable」を継承しているクラスだと使えますね。

    ついでに選択状態を解除したいときは「null」を指定してあげれば、解除できます。

    private void Start()
    {
    if (EventSystem.current.currentSelectedGameObject != null)
    {
    EventSystem.current.SetSelectedGameObject(null);
    }
    }


    選択されているゲームオブジェクトがないときはエラーになってしまうのでチェックする必要がありますが、こんな感じで選択状態を解除できます。

    画面を開いたときに選択状態を変更したい場合は使ってみてください。
    ではではノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Unityのバージョン変えたときにたまにでる「Missing Default layout」エラーの解決法 

    坂内っす。
    5月4日にはゲームダンジョン5がありますね!
    もう1か月を切りました!出展のみなさん頑張ってください!


    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    Unityのバージョンを変えたときにLayoutのエラーが出ることがあります。

    こんなエラー見たことあります?



    もうなにしても立ち上がらないのです。

    こんな時色々と対応策がネットでも書かれているのですが、以下をやれば一発で直りました。


    ①プロジェクトの「Library」フォルダを消す。

    これで直ります!(たぶん
    (Libraryって消していいんでしたっけ?)

    その後起動するとLibraryの中身を作り直すので立ち上がるまで時間がかかります。


    意外と解決法分からないと、どうしようどうしようってなっちゃうので、メモです。

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】OnDestroyを使うときに注意点 

    こんにちは。
    大坂です。

    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    ゲームオブジェクトが削除された時に何か処理をしたいときなんかにOnDestroyを使ったりしますが、これって一回もアクティブになっていないゲームオブジェクトだと呼ばれないんですね。

    ログ出すだけですがこんなコードをゲームオブジェクトにアタッチしておいて試してみます。

    void OnDestroy()
    {
    Debug.Log("削除されたよ");
    }


    結果はこんな感じ。


    アクティブにしておいた方のゲームオブジェクトを削除した時だけログが出てきますね。
    こんなこともあるので、動かないと思ったときは確認してみてくださいまし。

    ではではノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0