所持しているアニメ画像を指定の場所に表示したい
どうしてもCanvasにimageを作ってそこに表示する方法ばっかで、せっかくアニメになってるのにimageに乗せると(アタッチ?)アニメにならないか表示されない
うーんどうにかならんかと色々またまたネットで検索しまくり
【Unity】スクリプトからのオブジェクト表示・非表示、見かけ上の表示・非表示こちらでオブジェの表示非表示の切り替えを発見
・オブジェクト非表示
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class test : MonoBehaviour
{
[SerializeField] private GameObject a;//GameObject型の変数aを宣言 好きなゲームオブジェクトをアタッチ
void Start()
{
a.SetActive(false);
}
}
trueとfalseで表示非表示が切り替えられそう
これならドラッグアンドドロップした画像もなんとかなるかな?
挑戦
モンスタアニメを用意
後で選択とかしやすいように名前を数字に変更
スクリプト書いて
using UnityEngine;
public class TestT : MonoBehaviour
{
private string bbb = "0";
//[SerializeField] private GameObject a;//GameObject型の変数aを宣言 好きなゲームオブジェクトをアタッチ
void Start()
{
GameObject a = GameObject.Find(bbb);
// コンポーネントの取得
a.SetActive(false);
}
}
後で変数で選択できるように、変数bbbにして確認
Mo1に放り込む
実行
消えた!!
でも、オブジェクトを探すときに数字の 0 ( a=0 )では無理だった...
文字列(string)じゃないとダメ (a="0")
forとか繰り返し使いたいから文字列に変更か
数字を文字列に変更
C#の変更のやつを試したけどエラー
Unityだと使えないらしい
Console.WriteLine(num.ToString());こんな感じの命令文はエラーになる、で
【Unity】文字列stringの関数まとめこちらを参照
int num = 123;
string character = num.ToString();
これで変わるらしい
やってみる
まず、PlayerのステータスJsonにMoNo(モンスターナンバーとした)に文字列で番号を追加した
"MoNo":"0" この部分を追加
これで初期登録時に追加される(文字列なんで”0”とした)
Json読み込んだ後 playermons.pmon[0].MoNo で参照できるはず
モンスター画像と登録しているモンスターナンバーが一致だとtrueじゃないとfalseで、同じ場所に設置した画像の表示非表示をやってみる
//所持モンスターのJsonを読込
string inputString = Resources.Load<TextAsset>("playermons").ToString();
Pmon playermons = JsonUtility.FromJson<Pmon>(inputString);
//一致したらtrueにして表示、それ以外はfalseで非表示
for (int i = 0; i < 4; ++i)
{
string cha = i.ToString();
if (playermons.pmon[0].MoNo == cha)
{
GameObject a = GameObject.Find(cha);
a.SetActive(true);
}
else
{
GameObject a = GameObject.Find(cha);
a.SetActive(false);
}
}
ちなみに1匹目だけね
今回の登録モンスターアニメは4匹(0~3)だから i<4
string cha = i.ToString(); ここでiを文字列に変更してchaに入れる
if (playermons.pmon[0].MoNo == cha) モンスタナンバーと同じかどうか判断
やる前はこうやって同じ場所に重ねてる
わかりずらいw
で、実行
指定のモンスター(0)だけのアニメが表示された!!成功
これを5匹所持するから、5回繰り返ししなきゃだけど、2匹目とかは考えなきゃだね~
今回追加したのはこれ
using UnityEngine;
using static PlayFabLogin;
public class MoC : MonoBehaviour
{
void Start()
{
//新規の場合Json書込んでから読込みたいので起動を遅らせる
Invoke("Mo0", 1.5f);
}
void Mo0()
{
//所持モンスターのJsonを読込
string inputString = Resources.Load<TextAsset>("playermons").ToString();
Pmon playermons = JsonUtility.FromJson<Pmon>(inputString);
//一致したらtrueにして表示、それ以外はfalseで非表示
for (int i = 0; i < 4; ++i)
{
string cha = i.ToString();
if (playermons.pmon[0].MoNo == cha)
{
GameObject a = GameObject.Find(cha);
a.SetActive(true);
}
else
{
GameObject a = GameObject.Find(cha);
a.SetActive(false);
}
}
}
}
string inputString = Resources.Load<TextAsset>("playermons").ToString();
Pmon playermons = JsonUtility.FromJson<Pmon>(inputString);
Jsonを読み込むこれを追加しただけで
勝手に using static PlayFabLogin; が追加された
マイクロソフトビジュアルスタジオすごい
今後
まず全部のモンスターアニメを同じところに設置して...
選択して表示非表示
を、全部の枠に設置して...同じ名前だとかぶるから、全部名前を変えて...
めんどいけどやっとけば、戦闘とかにも使えるのかな
ステータスもすべてにText設定して表示しなきゃだし
めんどいw
htmlのが表示は楽だけど、こっちのほうが選択は増えるし、ゲームとしては完成度上がる
その分やる事が増えるけど
プログラマーさんには頭上がらんね
←前 【Unity初心者】Unityでネットゲームを作りたい【11】ゲームビュー、シミュレータ機種によって表示がずれる~画面の大きさ~カメラの関係(表示したい画像が出ない)
【Unity初心者】Unityでネットゲームを作りたい【13】ひたすらアニメーション画像貼り付け~ビルドしてスマホに表示してみる 次→