Unity フワフワ動くボタンの作成

※この説明は、UniTaskの使用が前提となります。
UniTaskについては、以下のページを参照してください。
みてー。
Unityのボタン自体をコードで動かす方法を考えてみた。
へー。
ボタンを押したら、アクションするのではなくて、最初から動いている感じですか。
うん。
作ってみるね。
まずは、2Dの方で新しいプロジェクトを作成して、ヒエラルキーウインドウの左上から「UI」→「Button - TextMeshPro」を押してボタンを作成する。
「Import TMP Essentials 」と「Import TMP Examples and Extras」は両方インポートする。
作成したボタンを中央に配置するために、InspectorのPosXとPosYを0に変更する。


下のようにボタンに名前をつける。今回は「FuwaFuwaButton」っていう名前にした。
この名前は、コードで指定する時に使うので重要。
コードについては、以下のように作成したよ。
【FuwaFuwa001.cs】
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cysharp.Threading.Tasks;//UniTaskを使うために必要
public class FuwaFuwa001 : MonoBehaviour
{
void Start ()
{
ugoki001();
}
async void ugoki001()
{
for(int i = 0; i < 100; ++i)
{
Vector2 iti = GameObject.Find("FuwaFuwaButton").transform.position;
GameObject.Find("FuwaFuwaButton").transform.position = new Vector2(iti.x + 0.15f, iti.y + 0.05f);
await UniTask.Delay(10);
}
ugoki002();
}
async void ugoki002()
{
for(int i = 0; i < 100; ++i)
{
Vector2 iti = GameObject.Find("FuwaFuwaButton").transform.position;
GameObject.Find("FuwaFuwaButton").transform.position = new Vector2(iti.x - 0.1f, iti.y + 0.03f);
await UniTask.Delay(10);
}
ugoki003();
}
async void ugoki003()
{
for(int i = 0; i < 100; ++i)
{
Vector2 iti = GameObject.Find("FuwaFuwaButton").transform.position;
GameObject.Find("FuwaFuwaButton").transform.position = new Vector2(iti.x - 0.05f, iti.y - 0.08f);
await UniTask.Delay(10);
}
ugoki001();
}
}
スクリプトを実行するために、空のオブジェクトを作成して、そこにアタッチする。
それから、再生ボタンをクリックするとふわふわ動くよ!

ゲームを盛り上げる一つのエフェクトとして使えそうですね。
お名前




