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

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

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

 

【ハルシオンブログ】複数シーンのまとめて生成とまとめて破棄について。こういう使い方することあるのかな・・・ 

こんにちは。坂内っす。

シーンって複数つかってます?

例えばこの3つのシーンがあるとします。
シーン名はそれぞれ左から「20190218_1」「20190218_2」「20190218_3」となっています



こいつをまとめて使う場合、起動シーンを用意して3つのシーンを読み込むことができます。

using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;

public class Script20190218 : MonoBehaviour
{
string[] SCENE_LIST = { "20190218_1", "20190218_2", "20190218_3" };

private void Awake() {
StartCoroutine(LoadScenes());
}

private IEnumerator LoadScenes() {
for(int i = 0; i < SCENE_LIST.Length; i++) {
yield return SceneManager.LoadSceneAsync(SCENE_LIST[i], LoadSceneMode.Additive);
}
}
}


実行するとこうなります。



それぞれのシーンが読み込まれました。

では全部のシーンを消す場合はどうでしょうか。

これまた簡単で、こんなコードでできます。

    private IEnumerator ExitScenes() {
for(int i = 0; i < SCENE_LIST.Length; i++) {
if(SceneManager.GetSceneByName(SCENE_LIST[i]).IsValid()) {
yield return SceneManager.UnloadSceneAsync(SCENE_LIST[i]);
}
}
}


実際に以下のコードを流してみましょう。

using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;

public class Script20190218 : MonoBehaviour
{
string[] SCENE_LIST = { "20190218_1", "20190218_2", "20190218_3" };

private void Awake() {
StartCoroutine(LoadScenes());
}

private IEnumerator LoadScenes() {
for(int i = 0; i < SCENE_LIST.Length; i++) {
yield return SceneManager.LoadSceneAsync(SCENE_LIST[i], LoadSceneMode.Additive);
}

yield return new WaitForSeconds(3);
yield return StartCoroutine(ExitScenes());
}

private IEnumerator ExitScenes() {
for(int i = 0; i < SCENE_LIST.Length; i++) {
if(SceneManager.GetSceneByName(SCENE_LIST[i]).IsValid()) {
yield return SceneManager.UnloadSceneAsync(SCENE_LIST[i]);
}
}
}
}


全部のシーンを読み込んで、3秒後にすべてのシーンを破棄します。



こんな感じで、複数シーンを生成破棄することができます。

何かに役に立てば幸い情報でした。

あでゅ~ノシ
スポンサーサイト

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】HierarchyでスクリプトがどのGameObjectに付いてるか知りたかった 

こんにちは。
大坂です。

シーンをいっぱいくっつけて作業をしていてあのスクリプトってどのGameObjectについてかなーなんて思って、
いろいろ開いて探したりしてたのですが、簡単に見つける方法があるんですね。



この赤い部分に「t:スクリプト名」とするだけ。
こんな感じでやるとUnityTestってスクリプトがついているGameObjectだけになりますね!



大文字小文字は気にしないみたいです。
ぱっと探したいときに便利ですね。

今週も短いですがこれで終わりですノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】Unity2018.3のShurikenになんか新しい項目が追加されてたから触ってみた。Orbitalでパーティクルを回転してみよう! 

こんにちは。坂内っす。

なんかShurikenに新しい項目が追加されてるみたいですね。

Velocityの項目なんですが。


「Orbital」とかの項目って今までありませんでしたよね。

途中からOrbitalのYやZを変えてみたらこんな動きをしたよ。



パーティクルが回る感じなんすね!



Orbital.X Y Z で回転軸を決めて、Speed Modifierで回転速度を決める感じなんですかね。
Radialに値を入れると、どんどん回転が大きくなっていく感じぽいです。

これで色々なエフェクトが作れるように!
(俺にはむりや)

ってことで、ちょっとしたUnity2018.3ネタでした。

では、あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】いつ見ても見慣れないNull演算子 

こんにちは。
大坂です。

ネタになるようなことがなかったので小ネタ。
まぁそんな感じばかりなのですが・・・。

Null演算子で書いてあるといつ見ても違和感があります。
こんな感じの書き方です。
    List<int> testList;

void Start() {
Debug.Log(testList?.Count);
}

「testList?」ってなんじゃい!って思うのですが、testListがnullの場合countを見てくれるって感じです。
この場合はリストがnullなので「null」が帰ってきますね。
リストになにか値が入っている場合はちゃんと入ってる要素数を返してくれます。

あまりに短すぎるので似たようなやつをもう一つ。
Null合体演算子ってやつ。
    string str;

void Start() {
Debug.Log(str ?? "Nullならこっちの文字列");
}

とすると、strがnull場合は「"Nullならこっちの文字列"」が返って、
strに文字列が入っていればstrに入れた文字列を返してくれます。

三項演算子でもかけますが、ちょっと省略できる感じですね。
    Debug.Log(str != null ? str : "Nullならこっちの文字列");

パッと見てなんだっけな?と思う時があるのでメモがてらブログに。

では今週もこの辺でノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】uGUIのTextをTextMeshProに変えたときにはまったやつ。なにこれ。 

こんにちは。坂内っす。

最近TMP(TextMeshPro)を使っていて、え?何?何が起きたの?・・・となったことを紹介。

こんな感じでuGUIのTextとTMPのオブジェクトを並べてみます。



前提条件として、CanvasのRenderModeは「Screen Space - Camera」です。



この状態で・・・・・windowオブジェクトのScale.zを0にすると・・・・




ぐしゃ・・・・

見ての通り、Sceneウインドウでは何も変わらないのに対し、GameウインドウではTMPの文字が■■■■になってます。

今までuGUIのTextでやっていたのを、TMPに変えてこの問題で暫く、はまってました。

これ注意やで。

ってことで、TMPの謎でした。あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0