さまざまなゲームオブジェクトをインスタンス化するメインボタンのグループがあります。これらのメインボタンを交互に切り替えると、ディスプレイパネルのすべての子オブジェクトがクリアされ、それに応じたコンテンツのインスタンス化関数が呼び出されます。
これは機能しますが、結果は理想的ではありません。メインボタンの1つをクリックして子をクリアしますが、新しい子をすぐに生成しません。もう一度クリックしてコンテンツを表示する必要があります。
パート1
public void OnClicked(){
GameObject _manager = GameObject.Find("Manager");
_manager.gameObject.GetComponent<managerSystem>().clearSubList();
}
public void OnClicked2(){
GameObject _manager = GameObject.Find("Manager");
_manager.gameObject.GetComponent<managerSystem>().getSubList(transform.name);
}
パート2
public void clearSubList(){
foreach (Transform child in SubScroll.transform) {
Destroy(child.gameObject);
}
}
パート3
public void getSubList(string theBName){
currentSubName = new List<string>();
currentSubPrice = new List<string>();
for (int i = 0; i < reader.Length; i++ ){
if (SubScroll.transform.childCount != reader.Length){
GameObject go = Instantiate(subListButton, SubScroll.transform);
string [] x = reader[i].Split('/');
if (x.Length == 2){go.name = x[0]; currentSubName.Add(x[0]); currentSubPrice.Add(x[1]);}
if (x.Length == 3){go.name = x[0] + " " + x[1]; currentSubName.Add(x[0] + " " + x[1]); currentSubPrice.Add(x[2]);}
Array.Clear(x, 0, x.Length);
}
}
それは私が最初に呼び出すリストをクリアすることに関連していますか?私はさまざまな方法に変更しましたが、これは私にとって最適です。パート2の2つのリストは、テキストファイルの名前に基づいてコンテンツを取得し、その行を解析します。これにより、コードのその部分が削除されました。同じ場合、forループセクションのこのリストのどこに値が取得されるのか疑問に思っている場合は、さらに時間がかかります。
パート1から:同じボタンクリックで両方のメソッドを配置したようです。両方のメソッドが同時に実行されるため、機能しない場合があります。
したがって、最初にすべての子をクリアしてから新しいオブジェクトを生成しようとしているため、両方の方法を組み合わせることでこれを実現できます。両方のonclickメソッドをマージし、コードを変更しました。それが役立つかどうか私に知らせてください。
新しいパート1:
public void onClickClearAndSpawnSublist() {
GameObject _manager = FindObjectOfType(typeof(managerSystem));
_manager.ClearAndSpawnSublist();
}
新しいパート3:
public void ClearAndSpawnSublist(string theBName) {
foreach (Transform child in SubScroll.transform)
{
Destroy(child.gameObject);
}
currentSubName = new List<string>();
currentSubPrice = new List<string>();
for (int i = 0; i < reader.Length; i++)
{
if (SubScroll.transform.childCount != reader.Length)
{
GameObject go = Instantiate(subListButton, SubScroll.transform);
string[] x = reader[i].Split('/');
if (x.Length == 2) { go.name = x[0]; currentSubName.Add(x[0]); currentSubPrice.Add(x[1]); }
if (x.Length == 3) { go.name = x[0] + " " + x[1]; currentSubName.Add(x[0] + " " + x[1]); currentSubPrice.Add(x[2]); }
Array.Clear(x, 0, x.Length);
}
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加