[ ps ]
[ 백준 / C++ ] 9656 : 수열 (tistory.com)
[ Unity ]
Input System을 활용하여 더블탭에 대응하는 액션을 구현하려면 어떻게 해야 할까.
원하는 Action의 Binding Properties를 보면, Interactions에서 Hold, Tap, Press 등등 다양한 입력을 추가할 수 있다.
여기서 Multi Tap을 추가해주면 된다.
Default로 더블탭이 설정되어 있으며, Tap Count를 수정하여 트리플?탭을 설정할 수도 있다.
Scriptable Object, 줄여서 SO는 유니티에서 데이터 저장 및 관리를 쉽게 해주는 데이터 컨테이너다.
재사용 가능한 데이터를 저장하는 데 사용되며, 코드와 데이터를 분리하여 코드를 더 깔끔하게 만들어준다.
또한 유니티의 인스펙터 창에서 직접 수정할 수 있기에 편리하다(수정 목록들을 코드에서 미리 명시).
using UnityEngine;
[CreateAssetMenu(fileName = "DefaultAttackSO", menuName = "TopDownController/Attacks/Default", order = 0)]
public class AttackSO : ScriptableObject
{
[Header("Attack Info")]
public float size;
public float delay;
public float power;
public float speed;
public LayerMask target;
[Header("Knock Back Info")]
public bool isOnKnockback;
public float knockbackPower;
public float knockbackTime;
}
SO 작성 예시이다.
CreateAssetMenu는 유니티의 Project 창에서 마우스 우클릭 후 Create에서 SO를 선택할 수 있도록 해주는 코드다.
마우스 우클릭 → Create → TopDownController → Attacks → Default를 선택하면 AttackSO를 만들 수 있다.
보이는 것과 같이 인스펙터 창에서 데이터를 직접 수정할 수 있다.
마지막으로 class에 [Serializable]를 붙이면 SO처럼 인스펙터 창에서 클래스 데이터를 직접 수정할 수 있다.
정확히는 [Serializable] 키워드를 붙인 클래스를 정의하고,
MonoBehaviour를 상속받은 C# 스크립트에서 해당 객체를 생성하면 가능하다.
using System;
using UnityEngine;
public enum StatsChangeType
{
Add,
Multiple,
Override,
}
[Serializable]
public class CharacterStat
{
public StatsChangeType statsChangeType;
[Range(1, 100)] public int maxHealth;
[Range(1f, 20f)] public float speed;
public AttackSO attackSO;
}
using UnityEngine;
using System.Collections.Generic;
public class CharacterStatsHandler : MonoBehaviour
{
[SerializeField] private CharacterStat baseStat;
public List<CharacterStat> statsModifiers = new List<CharacterStat>();
// ...
}
'TIL' 카테고리의 다른 글
[ 24.05.22 ] 내일배움캠프 26일차 TIL - event system (0) | 2024.05.22 |
---|---|
[ 24.05.20 ] 내일배움캠프 24일차 TIL - Input Rebinding (0) | 2024.05.20 |
[ 24.05.11 ] TIL - 이동, InputSystem (0) | 2024.05.11 |
[ 24.05.10 ] 내일배움캠프 19일차 TIL - 컴포넌트, 스크립트 (0) | 2024.05.10 |
[ 24.05.09 ] 내일배움캠프 18일차 TIL - 유니티 기초 (0) | 2024.05.09 |