X



初心者unityだけど質問、誰か助けて
■ このスレッドは過去ログ倉庫に格納されています
0001以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 21:19:19.163ID:btVjCSnj0
質問もどう書けばいいかわかんないからわかりにくいかもだけど誰か助けて

Charaクラス
int HP
int ATK
Skill CharaSkill

public Chara(int hp,int atk,Skill charaskill)
{
 HP = hp
 ATK = atk
 CharaSkill = charaskill 
}

public void Chara_a()
{
 hp = 10
 atk = 5
 charaskill = CharaSkill.ListX();

 Chara charaA = new Chara(hp,atk,charaskill)
 ↑(このcharaAのcharaSkillの中身にアクセスする方法が知りたい)
 Debug.Log(charaA.CharaSkill.Name)
 ↑これだとリストの一番後ろのスキルしか表示されない
}
0002以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 21:20:41.601ID:btVjCSnj0
スキルのリストがこれ

Skillクラス
Skill skill
List<Skill> skillList = new List<Skill>();
string Name
string Kouka

public Skill(string name,string kouka)
{
  Name = name
  Kouka = kouka
}

public Skill skill_a()
{
 skill = new Skill(''メラ'',''燃える'')
 return skill
}

public Skill skill_b()
{
 skill = new Skill(''ホイミ'',''回復'')
 return skill
}

public Skill skill_c()
{
 skill = new Skill(''バギ'',''風に吹かれる'')
 return skill
}

public void SkillList()
{
 skillList.Add(skill_a());
 skillList.Add(skill_b());
 skillList.Add(skill_c());
}

public Skill ListX()
{
 int N = Random.Range(0,2)
 for(int i = 0; i < N; i++)
 {
  skill = skillList[i]
 }
 return skill;
}
0003以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 21:22:26.913ID:btVjCSnj0
誰か助けてくださーーーーーい
0007以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 21:27:40.490ID:btVjCSnj0
>>4
CharaA.CharaSkillでDebugすると
CharaSkill とかしか表示してくれないんだよね

chara_a()は実際の数値を入れる関数です
言語はC#
0009以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 21:34:19.414ID:btVjCSnj0
>>5
でもcharaA.CharaSkill.Nameだったら一番後ろの名前だけは表示されるんだけど
これはアクセスできてるってことではないってこと?

>>6
公開の仕方がわからない
どういうプログラム書けばいいの?
0010以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 21:35:01.875ID:SCzwh99e0
マジレスすると










全部間違っている
0012以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 21:35:36.835ID:btVjCSnj0
>>8
コンストラクタと継承がまだよくわかってないです_
自分の今の書き方ではアクセスできない?
0013以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 21:47:06.370ID:2i5ZFqqV0
>>12
コンストラクタはCharaクラスのChara()
newしたときに実行される初期化関数って理解しとけばいい
継承わからないなら個別キャラの設定はクラスの外でやるしかない

同じくスキルクラスの方もおかしい
スキルクラスの中にスキルリストとか入れなくていいから
キャラにそのままスキルリスト持たせればいいよ

List<Skill> skillList =new List()
skillList.add(new Skill("スキルA","A"))
skillList.add(new Skill("スキルB","B"))

Chara CharaA=new Chara(hp,atk,skillList)

とかで
0014以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 21:51:48.632ID:SCzwh99e0
シーシャッパーが書き直したぞ

public class Chara{

public Chara(int hp, int atk, Skill skill){
Hp = hp;
Atk = atk;
Skill = skill;
}

public int Hp {get; private set;}

public int Atk {get; private set;}

public Skill Skill {get; private set;}

}
0015以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 21:52:13.207ID:SCzwh99e0
public class Skill{

public Skill(string name, string kouka){
Name = name;
Kouka = kouka;
}

public string Name {get; private set;}

public string Kouka {get; private set;}

}
0016以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 21:52:59.100ID:SCzwh99e0
var skillA = new Skill("メラ", "燃える");
var skillB = new Skill("ホイミ", "回復");
var skillC = new Skill(''バギ'', ''風に吹かれる'');

var skillList = new List<Skill>();
skill.Add(skillA);
skill.Add(skillB);
skill.Add(skillC);

int skillNum = skillList.Count;
int skillIndex = Random.Range(0. skillNum)

var skill = skillList[skillIndex];
var charaA = new Chara(10, 5, skill);

Debug.Log(charaA.Skill.Name);
0017以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 21:53:37.796ID:btVjCSnj0
>>11
それのやり方教えて欲しい!
今自分でもちょっと試してみます
0018以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 21:53:39.415ID:SCzwh99e0
これだとキャラA生成時にランダムな1つのスキルを持たせてる
0019以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 21:59:05.241ID:SCzwh99e0
public class Chara{

public Chara(int hp, int atk){
Hp = hp;
Atk = atk;

var skillA = new Skill("メラ", "燃える");
var skillB = new Skill("ホイミ", "回復");
var skillC = new Skill(''バギ'', ''風に吹かれる'');

SkillList.Add(skillA);
SkillList.Add(skillB);
SkillList.Add(skillC);

}

public int Hp {get; private set;}

public int Atk {get; private set;}

public List<Skill> SkillList {get;} = new List<Skill>();

public void ShowRandomSkillName(){
int skillIndex = Random.Range(0. skillNum)
var skill = skillList[skillIndex];
Debug.Log(skill.Name);
}

}

var charaA = new Chara(10, 5);
charaA.ShowRandomSkillName();
0020以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 21:59:45.122ID:SCzwh99e0
これならキャラ生成時に3つのスキルを作ってスキルリストに追加している
ShowRandomSkillNameでランダムな1つのスキル名をログに出している
0021以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 22:00:44.497ID:btVjCSnj0
>>13
自分じゃこのやり方しか思い付かなかった…
ちょっと考えます

>>16
ありがとう!
ゲットとセットがまだわかってないのであとで調べながら試してみます
0022以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 22:01:02.417ID:SCzwh99e0
>>16
skill.Add(skillA);
じゃなくて
skillList.Add(skillA);
だな
0023以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 22:01:42.581ID:SCzwh99e0
まずはC#の命名規則とプロパティについて学習するとよい
0024以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 22:02:57.340ID:SCzwh99e0
>>19
public void ShowRandomSkillName(){

int skillNum = SkillList.Count; ←これ抜けてた

int skillIndex = Random.Range(0. skillNum)
var skill = skillList[skillIndex];
Debug.Log(skill.Name);
}
0025以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 22:04:10.415ID:5WxskWjr0
エクセル管理してエクセル参照すりゃいいのでは
0026以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/04/23(土) 22:23:15.367ID:SCzwh99e0
>>14>>15
private set;はいらないな

public int Hp {get; private set;}

public int Hp {get;}

でよい
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況