728x90
반응형
복잡한 코드는 빡대가리인 나는 모르기에 심플한 코드들로 짜봤슴당!
Undo 저장 함수
public static List<GameObject> UndoList = new List<GameObject>();
void UndoSave()
{
if (!m_CurrentObj || !m_CurrentObj.Equals(CanvasController.m_GrabObject))
{//처음 저장하거나 같은 오브젝트 컨트롤하는 것이 아니라면
if (UndoList.Count != 0) UndoList.Clear();
m_CurrentObj = CanvasController.m_GrabObject;
m_firstUndo = false;
}
GameObject g = new GameObject();
g.name = "Undo_" + UndoList.Count;
UndoList.Add(g);
g.transform.parent = Undo_Parent.transform;
g.transform.position = CanvasController.m_GrabObject.transform.position;
g.transform.rotation = CanvasController.m_GrabObject.transform.rotation;
g.transform.localScale = CanvasController.m_GrabObject.transform.lossyScale;
}
Undo 실행 함수
저는 오브젝트를 드래그해서 옮기거나 확대, 회전을 하게 되면 위 함수가 실행되서 언도를 저장하게 만들었습니다.
입맛대로 만드셔서 사용하시면 될 듯합니당
public void UndoAct()
{
if (m_CurrentObj)//스크립트로 넘겨받은 인스턴스 오브젝트 온오프
{
if (UndoList.Count < 3)
{
#if UNITY_EDITOR
Debug.Log("Undo : Can't Undo");
#endif
return;
}
else
{
if (!m_firstUndo)//마지막 Undo는 현재 오브젝트의 위치임으로 삭제 후 그 전 위치값으로 이동
{ // 처음 언도 실행
temp = UndoList[UndoList.Count - 1];
UndoList.RemoveAt(UndoList.Count - 1);
Destroy(temp);
m_firstUndo = true;
}
#if UNITY_EDITOR
Debug.Log("Undo : Count : " + UndoList.Count);
Debug.Log(m_CurrentObj.transform.position + "\n" + UndoList[UndoList.Count - 1].transform.position);
#endif
m_CurrentObj.transform.position = UndoList[UndoList.Count - 1].transform.position;
m_CurrentObj.transform.rotation = UndoList[UndoList.Count - 1].transform.rotation;
m_CurrentObj.transform.localScale = UndoList[UndoList.Count - 1].transform.lossyScale;
temp = UndoList[UndoList.Count - 1];
UndoList.RemoveAt(UndoList.Count - 1);
Destroy(temp);
return;
}
}
}
처음 언도가 실행 하면 마지막 언도는 현재 위치와 같기 때문에 삭제해주고 그 전 언도의 위치와 회전, 크기 값을 가져와
오브젝트에 적용시켜줍니다.(지금 생각한 건데 저장시기를 옮기려고 할 때 저장해주면 첫 언도 삭제 기능은 빼도 되겠네요 전 귀찮아서 안할거임 키득)
728x90
반응형
'Unity' 카테고리의 다른 글
[Unity] Touch로 카메라 움직이기(Mobile) (0) | 2019.08.29 |
---|---|
[Unity] List에 저장된 오브젝트 Destroy 주의 사항 (0) | 2019.08.28 |
[Unity] Mobile 개발 필수 (0) | 2019.08.16 |
[Unity] Oculus go Loading logo 이후에 Freeze되는 현상 해결 방법 (0) | 2019.08.08 |
[Unity] Editor에서 Component 찾기 (0) | 2019.08.07 |