public class Character : FFMonoBehaviour
{
private static Character instance;
public static Character Instance
{
get
{
return instance;
}
}
public override void Awake()
{
base.Awake();
m_stateMachineManager = new CharacterStateMachineManager();
m_stateMachineManager.Init(this);
m_myTransform = transform;
m_animation = GetComponent<Animation>();
SetState(UnitStateIndex.Idle);
}
~중략~
public float attackSpeed
{
get { return m_attackSpeed; }
set { m_attackSpeed = value; }
}
public int attack
{
get { return m_attack; }
set { m_attack = value;}
}
float m_attackSpeed = 1;
int m_attack = 15;
Transform m_myTransform;
CharacterStateMachineManager m_stateMachineManager;
Animation m_animation;
}
이렇게 캐릭터 클래스에서 attack을 선언 햇는데.
bool MakeOneMoveDownIndex(Tile[] LineOfTiles)
{
for (int i = 0; i < LineOfTiles.Length - 1; i++)
{
//MOVE BLOCK
if (LineOfTiles[i].Number == 0 && LineOfTiles[i + 1].Number != 0)
{
LineOfTiles[i].Number = LineOfTiles[i + 1].Number;
LineOfTiles[i + 1].Number = 0;
return true;
}
// MERGE BLOCK
if (LineOfTiles[i].Number != 0 && LineOfTiles[i].Number == LineOfTiles[i + 1].Number &&
LineOfTiles[i].mergedThisTurn == false && LineOfTiles[i + 1].mergedThisTurn == false)
{
LineOfTiles[i].Number *= 2;
LineOfTiles[i + 1].Number = 0;
LineOfTiles[i].mergedThisTurn = true;
LineOfTiles[i].PlayMergeAnimation();
Character.Instance.attack = (int) LineOfTiles[i].Number; //이부분 에서 null reference에러남
Debug.Log(LineOfTiles[i].Number);
if (LineOfTiles[i].Number == 2048)
YouWon();
return true;
}
}
return false;
참고로 tile클래스안에는
public int Number
{
get{ return number;}
set { number = value;
if (number == 0)
SetEmpty();
else
{ ApplyStyle(number);
SetVisible();}
}
}
private int number;
이렇게 선언 되어져 있음.
넘버 값을 어택으로 보내고 싶은데. 도와줘요.
ㅅㅂ 코드 읽기 싫게도 썼네
ㄴ 미안해.
ㄴ 어떻게 해야 보기 쉬울까
이런 게임 해본적 있는데 - dc App
일단 MakeOneMoveDownIndex부터 일반화하시길 - dc App
Awake 부분에 Instance = this; 이런 식으로 해보삼 - dc App