public IEnumerator EmptyStringErrorAsync() { var box = AsyncBoxElement.GO( null,// bg画像 () => { Debug.Log("ルートがタップされた"); }, AsyncTextElement.GO(null)// テキスト ); // レイアウトに使うクラスを生成する var layouter = new BasicAsyncLayouter(); // コンテンツのサイズをセットする var size = new Vector2(600, 100); // レイアウトを行う yield return(LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter )); var rectTrans = box.gameObject.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; ScreenCapture.CaptureScreenshot("./images/" + methodName); yield break; }
public IEnumerator ComplexMissingCharAsync() { var box = AsyncBoxElement.GO( null,// bg画像 () => { Debug.Log("ルートがタップされた"); }, AsyncTextElement.GO("あいうえお\U0001F95D \U0001F95D \U0001F95D")// テキストに半角スペースが含まれることで、半角スペースのサイズが-になるケースがある。アルファベットが入った場合は問題なくサイズが出るので、分割が悪さをしているとみなすべき。 ); // レイアウトに使うクラスを生成する var layouter = new BasicAsyncLayouter(); // コンテンツのサイズをセットする var size = new Vector2(600, 100); // レイアウトを行う yield return(LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter )); var rectTrans = box.gameObject.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; yield return(null); ScreenCapture.CaptureScreenshot("./images/" + methodName); yield break; }
public IEnumerator AsyncMethodWithEmojiWithRelayout() { var box = AsyncBoxElement.GO( null,// bg画像 () => { Debug.Log("ルートがタップされた"); }, AsyncTextElement.GO("yasu \U0001F60A is public prob!")// テキスト ); // レイアウトに使うクラスを生成する var layouter = new BasicAsyncLayouter(); // コンテンツのサイズをセットする var size = new Vector2(600, 100); // レイアウトを行う var done = false; LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter, () => { LayouTaro.RelayoutWithUpdateAsync <BasicMissingSpriteCache>( size, box, new Dictionary <LTElementType, object> { { LTElementType.AsyncText, "yasu \U0001F60A is public prob!" } }, layouter, () => { done = true; } ); } ); while (!done) { yield return(null); } var rectTrans = box.gameObject.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; ScreenCapture.CaptureScreenshot("./images/" + methodName); while (false) { yield return(null); } yield break; }
public IEnumerator AsyncMethodWithEmojiComplex() { var box = AsyncBoxElement.GO( null,// bg画像 () => { Debug.Log("ルートがタップされた"); }, AsyncTextElement.GO("hannidjkfajfaoooood"), // テキスト AsyncImageElement.GO(null), // 画像 AsyncButtonElement.GO(null, () => { Debug.Log("ボタンがタップされた"); }), AsyncTextElement.GO("hannin is yasu!\U0001F60A\U0001F60B this is public problem! goooooooooooooad") // 59から絵文字を1文字削ると?2文字減る。文字数カウント的にはUTF8と同じ扱いなのか。うーん // 事前にサイズを取得、インデックスポイントを送り込んで、取り除いて、という形にするか。 // どうすればできる?載せ替える四角を成立させればいいか。単純に文字列コンテンツを絵文字でぶった切るか!!これは手な気がする。 // 他になんかないかな。いけるな、 // 文字列を最初に渡すときに、N個の絵文字が出た場合、\Uで検索して文字を取り出す。そんで、その文字がどんな画像になるか、っていうのを別途やる。そんで、 // それぞれの文字を出力して、サイズを割り出し、文字列を再構成する。 // 再構成した上でレイアウトすればいい。で、それぞれのレイアウト終了時に絵文字の画像を割り当てるか。 // この方法であれば、まあ、そもそも画像を割り当てるような置換ができれば優勝できるな。 // 割り出し方に問題が出るかな、例があると嬉しいな。ない。今はない。 ); // レイアウトに使うクラスを生成する var layouter = new BasicAsyncLayouter(); // コンテンツのサイズをセットする var size = new Vector2(600, 100); // レイアウトを行う var done = false; LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter, () => { done = true; } ); while (!done) { yield return(null); } var rectTrans = box.gameObject.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; ScreenCapture.CaptureScreenshot("./images/" + methodName); yield break; }
public IEnumerator GetMissingChar3RelayoutAsync() { var box = AsyncBoxElement.GO( null,// bg画像 () => { Debug.Log("ルートがタップされた"); }, AsyncTextElement.GO("aaaaaaaaaaaaabbbbbbbbb💚🎮✨✨cccccccccccccccccccccccccccccccddddddddddddddddddddd") ); // レイアウトに使うクラスを生成する var layouter = new BasicAsyncLayouter(); // コンテンツのサイズをセットする var size = new Vector2(600, 100); var missingDetected = false; var cache = InternalCachePool.Get <BasicMissingSpriteCache>(); cache.Debug_OnMissingCharacter( () => { missingDetected = true; } ); // レイアウトを行う yield return(LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter )); var rectTrans = box.gameObject.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; Assert.True(missingDetected); yield return(LayouTaro.RelayoutWithUpdateAsync <BasicMissingSpriteCache>( size, box, new Dictionary <LTElementType, object>() { { LTElementType.AsyncText, "aaaaaaaaaaaaabbbbbbbbb💚🎮✨✨cccccccccccccccccccccccccccccccddddddddddddddddddddd" } }, layouter )); yield return(null); ScreenCapture.CaptureScreenshot("./images/" + methodName); yield break; }
public IEnumerator AsyncMethodImageAndButtonWithRelayout() { // generate your own data structure with parameters for UI. var box = AsyncBoxElement.GO( null,// UI bg with image () => { Debug.Log("root box element is tapped."); }, AsyncImageElement.GO(null),// image. AsyncButtonElement.GO(null, () => { Debug.Log("button is tapped."); }) ); // generate the layouter which you want to use for layout. var layouter = new BasicAsyncLayouter(); // set the default size of content. var size = new Vector2(600, 100); // do layout with LayouTaro. the GameObject will be returned with layouted structure. var done = false; LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter, () => { LayouTaro.RelayoutWithUpdateAsync <BasicMissingSpriteCache>( size, box, new Dictionary <LTElementType, object> { }, layouter, () => { done = true; } ); } ); while (!done) { yield return(null); } var rectTrans = box.gameObject.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; ScreenCapture.CaptureScreenshot("./images/" + methodName); yield break; }
public IEnumerator RelayoutWithEmojiAsync() { // generate your own data structure with parameters for UI. var box = AsyncBoxElement.GO( null,// UI bg with image () => { Debug.Log("root box element is tapped."); }, AsyncTextElement.GO("hannin is yasu! this is public problem\U0001F60A! gooooooooooooood "), // text. AsyncImageElement.GO(null), // image. AsyncButtonElement.GO(null, () => { Debug.Log("button is tapped."); }) ); // generate the layouter which you want to use for layout. var layouter = new BasicAsyncLayouter(); // set the default size of content. var size = new Vector2(600, 100); // do layout with LayouTaro. the GameObject will be returned with layouted structure. yield return(LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter )); var rectTrans = box.gameObject.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; // update element values and re-layout with same GameObject. yield return(LayouTaro.RelayoutWithUpdateAsync <BasicMissingSpriteCache>( size, box, new Dictionary <LTElementType, object> { { LTElementType.AsyncImage, null }, { LTElementType.AsyncText, "relayout\U0001F60A!" } }, layouter )); while (false) { yield return(null); } yield return(null); ScreenCapture.CaptureScreenshot("./images/" + methodName); yield break; }
public IEnumerator SpacesAndLayout3RelayoutAsync() { var box = AsyncBoxElement.GO( null,// bg画像 () => { Debug.Log("ルートがタップされた"); }, AsyncButtonElement.GO(null, () => { }), AsyncTextElement.GO( "ここから " + // 全角スペースが9文字あり、かなりのサイズになる。 "・") // 連続するスペースと文字、・の直前で改行が発生する。 ); // レイアウトに使うクラスを生成する var layouter = new BasicAsyncLayouter(); // コンテンツのサイズをセットする var size = new Vector2(600, 100); // レイアウトを行う yield return(LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter )); var rectTrans = box.gameObject.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; yield return(LayouTaro.RelayoutWithUpdateAsync <BasicMissingSpriteCache>( size, box, new Dictionary <LTElementType, object> { { LTElementType.AsyncText, "ここから " + // 全角スペースが9文字あり、かなりのサイズになる。 "・" } }, layouter )); yield return(null); while (false) { yield return(null); } ScreenCapture.CaptureScreenshot("./images/" + methodName); yield break; }
public IEnumerator AsyncMethodWithEmojiComplex2() { var box = AsyncBoxElement.GO( null,// bg画像 () => { Debug.Log("ルートがタップされた"); }, AsyncTextElement.GO("hannidjkfajfaoooood"), // テキスト AsyncImageElement.GO(null), // 画像 AsyncButtonElement.GO(null, () => { Debug.Log("ボタンがタップされた"); }), AsyncTextElement.GO("hannin is yasu!\U0001F60A this is public problem! goooooooooooooad"), // テキスト AsyncImageElement.GO(null), // 画像 AsyncImageElement.GO(null), // 画像 AsyncTextElement.GO("hannidjkfajfaoooood2") ); // レイアウトに使うクラスを生成する var layouter = new BasicAsyncLayouter(); // コンテンツのサイズをセットする var size = new Vector2(600, 100); // レイアウトを行う var done = false; LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter, () => { done = true; } ); while (!done) { yield return(null); } var rectTrans = box.gameObject.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; ScreenCapture.CaptureScreenshot("./images/" + methodName); yield break; }
public IEnumerator WithEmojiComplex2Frames() { var box = AsyncBoxElement.GO( null,// bg画像 () => { Debug.Log("ルートがタップされた"); }, AsyncTextElement.GO("hannidjkfajfaoooood"), // テキスト AsyncImageElement.GO(null), // 画像 AsyncButtonElement.GO(null, () => { Debug.Log("ボタンがタップされた"); }), AsyncTextElement.GO("hannin is yasu!\U0001F60A this is public problem! goooooooooooooad"), // テキスト AsyncImageElement.GO(null), // 画像 AsyncImageElement.GO(null), // 画像 AsyncTextElement.GO("hannidjkfajfaoooood2") ); // レイアウトに使うクラスを生成する var layouter = new BasicAsyncLayouter(); // コンテンツのサイズをセットする var size = new Vector2(600, 100); var before = Time.frameCount; // レイアウトを行う yield return(LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter )); var rectTrans = box.gameObject.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; var after = Time.frameCount; Assert.True(before + 1 == after, "not match. before:" + before + " after:" + after); yield return(null); ScreenCapture.CaptureScreenshot("./images/" + methodName); yield break; }
public IEnumerator BasicPatternFrames() { var box = AsyncBoxElement.GO( null,// bg画像 () => { Debug.Log("ルートがタップされた"); }, AsyncTextElement.GO("hannin is yasu! this is public problem! gooooooooooooood"), // テキスト AsyncImageElement.GO(null), // 画像 AsyncButtonElement.GO(null, () => { Debug.Log("ボタンがタップされた"); }) ); // レイアウトに使うクラスを生成する var layouter = new BasicAsyncLayouter(); // コンテンツのサイズをセットする var size = new Vector2(600, 50); var before = Time.frameCount; // レイアウトを行う /* * さて、どんな方法が取れるか。 * 非同期を底の方まで連れて行きたい、という需要があるので、すべてをIEnumeratorで回すか、ああ、 * 上の方で実行しても勝手に回ってくれる必要があるのか、うん。じゃあ独自Updateかな。 */ yield return(LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter )); var rectTrans = box.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; var after = Time.frameCount; Assert.True(before + 1 == after, "not match. before:" + before + " after:" + after); yield return(null); ScreenCapture.CaptureScreenshot("./images/" + methodName); yield break; }
public IEnumerator IsEmojiOrNotComplexCase() { var go = AsyncTextElement.GO("A\u029AB"); // 出ない絵文字がある -> 該当文字のパラメータがNaNになってしまう var box = AsyncBoxElement.GO( null, // bg画像 () => { Debug.Log("ルートがタップされた"); }, AsyncButtonElement.GO(null, () => { }), go ); // レイアウトに使うクラスを生成する var layouter = new BasicAsyncLayouter(); // コンテンツのサイズをセットする var size = new Vector2(600, 100); // レイアウトを行う yield return(LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter )); // NaNになっていないかどうかをチェックする var targetRectTrans = go.transform.GetChild(0).GetComponent <RectTransform>(); Assert.True(targetRectTrans.anchoredPosition.y == 0, "not match, targetRectTrans.anchoredPosition.y:" + targetRectTrans.anchoredPosition.y); var rectTrans = box.gameObject.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; yield return(null); while (false) { yield return(null); } ScreenCapture.CaptureScreenshot("./images/" + methodName); yield break; }
public IEnumerator ShouldNotMissingSprite() { var go = AsyncTextElement.GO("A\u26E9B♥"); var box = AsyncBoxElement.GO( null,// bg画像 () => { Debug.Log("ルートがタップされた"); }, go ); // レイアウトに使うクラスを生成する var layouter = new BasicAsyncLayouter(); // コンテンツのサイズをセットする var size = new Vector2(600, 100); // レイアウトを行う yield return(LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter )); // サイズが0やNaNになっていないかどうかをチェックする var targetRectTrans = go.transform.GetChild(0).GetComponent <RectTransform>(); Assert.True(0 < targetRectTrans.sizeDelta.x, "not match, targetRectTrans.sizeDelta:" + targetRectTrans.sizeDelta); var rectTrans = box.gameObject.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; yield return(null); while (false) { yield return(null); } ScreenCapture.CaptureScreenshot("./images/" + methodName); yield break; }
public IEnumerator ImageAndButtonFrames() { // generate your own data structure with parameters for UI. var box = AsyncBoxElement.GO( null,// UI bg with image () => { Debug.Log("root box element is tapped."); }, AsyncImageElement.GO(null),// image. AsyncButtonElement.GO(null, () => { Debug.Log("button is tapped."); }) ); // generate the layouter which you want to use for layout. var layouter = new BasicAsyncLayouter(); // set the default size of content. var size = new Vector2(600, 100); var before = Time.frameCount; // do layout with LayouTaro. the GameObject will be returned with layouted structure. yield return(LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter )); var rectTrans = box.gameObject.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; var after = Time.frameCount; Assert.True(before + 1 == after, "not match. before:" + before + " after:" + after); yield return(null); ScreenCapture.CaptureScreenshot("./images/" + methodName); yield break; }
public IEnumerator LayoutOneLineTextDoesNotContainInTheEndOfLineAsync() { var box = AsyncBoxElement.GO( null,// bg画像 () => { Debug.Log("ルートがタップされた"); }, AsyncTextElement.GO("hannin is yasu! this is public problem! gooooooood"), // テキスト AsyncImageElement.GO(null), // 画像 AsyncImageElement.GO(6.558f + 0.0002f, 10f), AsyncTextElement.GO("lllllllllllllx"), AsyncTextElement.GO("dijklmnoああああああああああああいえああああ") ); // レイアウトに使うクラスを生成する var layouter = new BasicAsyncLayouter(); // コンテンツのサイズをセットする var size = new Vector2(600, 100); // レイアウトを行う yield return(LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter )); var rectTrans = box.gameObject.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; yield return(null); while (false) { yield return(null); } ScreenCapture.CaptureScreenshot("./images/" + methodName); yield break; }
public IEnumerator DetectMissingEmojiAsync() { // generate your own data structure with parameters for UI. var box = AsyncBoxElement.GO( null,// UI bg with image () => { Debug.Log("root box element is tapped."); }, AsyncTextElement.GO("\U0001F971\U0001F60A"), // emoji and mark. mark is missing by default. AsyncImageElement.GO(null), // image. AsyncButtonElement.GO(null, () => { Debug.Log("button is tapped."); }) ); // generate the layouter which you want to use for layout. var layouter = new BasicAsyncLayouter(); // set the default size of content. var size = new Vector2(600, 100); // do layout with LayouTaro. the GameObject will be returned with layouted structure. yield return(LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter )); var rectTrans = box.gameObject.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; yield return(null); ScreenCapture.CaptureScreenshot("./images/" + methodName); while (false) { yield return(null); } yield break; }
public IEnumerator IsEmojiOrNotComplexCase2() { var go = AsyncTextElement.GO("あ^い"); // 記号がmissingとして扱われてしまう場合がある var box = AsyncBoxElement.GO( null, // bg画像 () => { Debug.Log("ルートがタップされた"); }, AsyncButtonElement.GO(null, () => { }), go ); // レイアウトに使うクラスを生成する var layouter = new BasicAsyncLayouter(); // コンテンツのサイズをセットする var size = new Vector2(600, 100); // レイアウトを行う yield return(LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter )); var rectTrans = box.gameObject.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; yield return(null); while (false) { yield return(null); } ScreenCapture.CaptureScreenshot("./images/" + methodName); yield break; }
public IEnumerator MultilineAfterFilledOneLineLongAsync() { // 行頭からの改行を行う要素がY位置ゼロよりも下方で発生する場合にレイアウトが狂うバグ var box = AsyncBoxElement.GO( null,// bg画像 () => { Debug.Log("ルートがタップされた"); }, AsyncTextElement.GO("dijklmnoああああああああああああ"), AsyncTextElement.GO("dijklmnoああああああああああああいえあああああああああああああああああああああああああああああああああああああああ") ); // レイアウトに使うクラスを生成する var layouter = new BasicAsyncLayouter(); // コンテンツのサイズをセットする var size = new Vector2(600, 100); // レイアウトを行う yield return(LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter )); var rectTrans = box.gameObject.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; yield return(null); while (false) { yield return(null); } ScreenCapture.CaptureScreenshot("./images/" + methodName); yield break; }
public IEnumerator SimpleEmojiFrames() { var box = AsyncBoxElement.GO( null,// bg画像 () => { Debug.Log("ルートがタップされた"); }, AsyncTextElement.GO("a\U0001F60A")// 絵文字 ); // レイアウトに使うクラスを生成する var layouter = new BasicAsyncLayouter(); // コンテンツのサイズをセットする var size = new Vector2(600, 100); var before = Time.frameCount; // レイアウトを行う yield return(LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter )); var rectTrans = box.gameObject.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; var after = Time.frameCount; Assert.True(before + 1 == after, "not match. before:" + before + " after:" + after); yield return(null); ScreenCapture.CaptureScreenshot("./images/" + methodName); yield break; }
public IEnumerator SpacesAndLayout2Async() { var box = AsyncBoxElement.GO( null,// bg画像 () => { Debug.Log("ルートがタップされた"); }, AsyncButtonElement.GO(null, () => { }), AsyncTextElement.GO("ここから ・ ここまで")// 連続するスペースと文字 ); // レイアウトに使うクラスを生成する var layouter = new BasicAsyncLayouter(); // コンテンツのサイズをセットする var size = new Vector2(600, 100); // レイアウトを行う yield return(LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter )); var rectTrans = box.gameObject.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; yield return(null); while (false) { yield return(null); } ScreenCapture.CaptureScreenshot("./images/" + methodName); yield break; }
public IEnumerator AsyncMethodSameTime() { var done0 = false; var done1 = false; var done2 = false; { var box = AsyncBoxElement.GO( null,// bg画像 () => { Debug.Log("ルートがタップされた"); }, AsyncTextElement.GO("hannin is yasu! this is public problem! gooooooooooooood"), // テキスト AsyncImageElement.GO(null), // 画像 AsyncButtonElement.GO(null, () => { Debug.Log("ボタンがタップされた"); }), AsyncTextElement.GO("h") ); // レイアウトに使うクラスを生成する var layouter = new BasicAsyncLayouter(); // コンテンツのサイズをセットする var size = new Vector2(600, 50); // レイアウトを行う LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter, () => { done0 = true; var rectTrans = box.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = new Vector3(0, -160 * 0, 0); rectTrans.localScale = Vector3.one; } ); } { var box = AsyncBoxElement.GO( null,// bg画像 () => { Debug.Log("ルートがタップされた"); }, AsyncTextElement.GO("hannin is yasu! this is public problem! gooooooooooooood"), // テキスト AsyncImageElement.GO(null), // 画像 AsyncButtonElement.GO(null, () => { Debug.Log("ボタンがタップされた"); }), AsyncTextElement.GO("h") ); // レイアウトに使うクラスを生成する var layouter = new BasicAsyncLayouter(); // コンテンツのサイズをセットする var size = new Vector2(600, 50); // レイアウトを行う LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter, () => { done1 = true; var rectTrans = box.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = new Vector3(0, -160 * 1, 0); rectTrans.localScale = Vector3.one; } ); } { var box = AsyncBoxElement.GO( null,// bg画像 () => { Debug.Log("ルートがタップされた"); }, AsyncTextElement.GO("hannin is yasu! this is public problem! gooooooooooooood"), // テキスト AsyncImageElement.GO(null), // 画像 AsyncButtonElement.GO(null, () => { Debug.Log("ボタンがタップされた"); }), AsyncTextElement.GO("h") ); // レイアウトに使うクラスを生成する var layouter = new BasicAsyncLayouter(); // コンテンツのサイズをセットする var size = new Vector2(600, 50); // レイアウトを行う LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter, () => { done2 = true; var rectTrans = box.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = new Vector3(0, -160 * 2, 0); rectTrans.localScale = Vector3.one; } ); } while (!(done0 && done1 && done2)) { yield return(null); } while (false) { yield return(null); } ScreenCapture.CaptureScreenshot("./images/" + methodName); yield break; }
public IEnumerator DetectMissingEmojiContinuesFrames() { // generate your own data structure with parameters for UI. var box = AsyncBoxElement.GO( null,// UI bg with image () => { Debug.Log("root box element is tapped."); }, AsyncTextElement.GO("\U0001F60A\U0001F60A\U0001F60A\U0001F60A\U0001F60A\U0001F60A\U0001F60A\U0001F60A\U0001F60A\U0001F60A\U0001F60A\U0001F60A\U0001F60A\U0001F60A\U0001F60A\U0001F60A\U0001F60A\U0001F60A\U0001F60A\U0001F60A\U0001F60A\U0001F60A\U0001F60A"), // mark is missing by default. AsyncImageElement.GO(null), // image. AsyncButtonElement.GO(null, () => { Debug.Log("button is tapped."); }) ); // generate the layouter which you want to use for layout. var layouter = new BasicAsyncLayouter(); // set the default size of content. var size = new Vector2(600, 100); var runner = new GameObject().AddComponent <DebugRunner>(); var cached = false; var currentCache = InternalCachePool.Get <BasicMissingSpriteCache>(); // https://dummyimage.com/21.76744x41.39648/129393 currentCache.LoadMissingEmojiOrMark( "", 0f, 21.76744f, 41.39648f, 129393, iEnum => { runner.StartCoroutine(iEnum); }, tex => { cached = true; }, () => { Debug.LogError("取得失敗!"); } ); while (!cached) { yield return(null); } var before = Time.frameCount; yield return(LayouTaro.LayoutAsync <BasicMissingSpriteCache>( canvas.transform, size, box, layouter )); var rectTrans = box.gameObject.GetComponent <RectTransform>(); rectTrans.anchoredPosition3D = Vector3.zero; rectTrans.localScale = Vector3.one; var after = Time.frameCount; Assert.True(before + 1 == after, "not match. before:" + before + " after:" + after); yield return(null); ScreenCapture.CaptureScreenshot("./images/" + methodName); while (false) { yield return(null); } yield break; }