728x90

문제점: public bool testBool = false; 이렇게 초기화를 했는데도 계속 초기화 값이 반대값 일때...
해결: 유니티 에디터를 보시라. 

스크립트에는 false 로 줬지만, 에디터에는 체크가 되어 있어서 계속 true가 됐다.. .샹...

728x90
반응형
728x90

 

문제점: 한 글자씩 타이핑 줄때 <color~ 같은 태그가 유저에게 보인다. </color> 까지 닫아줘야 색상이 지정된다.
해결: 임시 제어문자를 넣어준다. 

 


    string testStr = "안녕하세요. r거두절meb입니다.";

    public IEnumerator ShowText(string fullText, Text txtCompo)
    {
        string displayText = ""; // 표시할 최종 문자열
        string color = "black"; // 기본 색상

        for (int i = 0; i < fullText.Length; i++)
        {
            if(fullText[i] == 'r'){
                color = "red"; // 빨간색 설정
                continue;
            } else if(fullText[i] == 'b'){
                color = "black"; // 검정색 설정
                continue;
            }

            // 현재 문자에 적절한 색상 적용
            displayText += $"<color={color}>{fullText[i]}</color>";

            txtCompo.text = displayText;
            yield return new WaitForSeconds(0.1f);
        }

        juniorScriptCoroutine = null;
    }

 

사용법: r, b는 내가 넣은 임시 문자고 필요에 따라 다른걸 넣어주면 된다.
r뒤부터는 빨간색이 나오고, b뒤부터는 검정색이 나올 수 있도록했다. 
r, b 차례일때는 다음 폰트의 color만 바꿔주는 역할만 하고 텍스트에 들어가지 않도록 continue를 해준다.

 

 

728x90
반응형
728x90

내게 필요했던 점: 데이터를 저장할 곳, DATA CRUD + 개발 중 손쉽게 수정이 가능하게.
해결 방법: Json텍스트저장, scriptableObject, simpleSQL 등. 그 중 데이터를 쉽게 넣고 한 눈에 보기 쉬운 SimpleSQL을 선택했다.

< 준비물 >
1. 에셋스토어에서 구매를 하고 다운을 받아서 임포트를 한다.(Demo도 함께 인스톨)
2. DB Browser for SQL을 다운 받는다. https://sqlitebrowser.org/dl/

준비물만 있으면 끝이다.
SimpleSQL > Demos > DataBases를 보면 데이터베이스가 있는 걸 볼 수 있다.
CRUD는 데모에 있으니 쿼리를 잘 확인해 보면 될것이고... 내가 원하는건 대량으로 데이터를 넣는 것이다.
그렇기 때문에 코드로 하는게 아니고 db툴로 하고 싶었다.
초기데이터는 SimpleSQL > Demos > DataBases 여기에 있는 데이터가 초기 데이터라고 보면 된다. 게임을 최초로 시작하면 제공될 데이터.

아래 이미지를 보면 DbManager의 Simple Sql Manager스크립트에 Change Working Name이 SciFi.sqlite라고 되어 있다. 내가 테이블 데이터를 변경할때 저 이름의 db를 변경하겠다는 뜻이다.


이제 db툴을 이용하기 위해 저 SciFi.sqlite라는 db파일이 실제로 어디에 있는지 알아야 한다.

string dataPath = Application.persistentDataPath;  
Debug.Log("Persistent Data Path: " + dataPath);

위 로그를 찍어보면 영구적으로 데이터를 저장할 수 있는 경로가 나온다. 게임을 지워야 사라지는 데이터다.
가보면

이렇게 있다.

이 파일을 아까 다운 받았던, DB Browser for SQLite에 끌어다 넣는다.

그럼 위 처럼 나온다. 이미지 상단 탭의 데이터베이스 구조, 데이터 보기 등을 보면서 툴 구조를 살펴보고, 데이터를 만져보쟈!

728x90
반응형
728x90

문제: Rect Transform에서 position이 NaN으로 뜨고 수정이 안되는 문제.
해결 방법: 검색해보니 두가지 방법이 있었다.
1. Inspector창을 debug 모드로 하고 수정한다.

내 경우에는 이렇게 안됐다.

2. 다른 컴포넌트의 Rect Transform을 복붙한다.
- 컴포넌트 우클릭 후 -> copy -> Position
- NaN뜨는 오브젝트의 Rect Transform에 같은 방법으로 Paste를 한다.

728x90
반응형
728x90

원하는 것: 버튼 누르면 위로 촤라락 펼쳐지게 하기.

방법
1. 유니티 AssetStore에서 LeanTween 다운 받고 import하기.
2. 소스짜기.

using UnityEngine;  
using UnityEngine.UI;

public class SpreadObj : MonoBehaviour  
{  
    public GameObject mainButton;  
    public GameObject[] subButtons;  
    private bool areSubButtonsVisible = false;

    public void ToggleSubButtons()
    {
        areSubButtonsVisible = !areSubButtonsVisible;

        if (areSubButtonsVisible)
        {
            // 서브 버튼을 보이게 하고 슬라이딩 효과로 배치
            SetSubButtonsActive(true);
            SlideSubButtons(); // 최종 위치 설정
        }
        else
        {
            SlideSubButtons(true);
            // 서브 버튼을 숨기고 초기 위치로 순서대로 빨려들어가는 효과
        }
    }

    void SetSubButtonsActive(bool isActive)
    {
        foreach (GameObject subButton in subButtons)
        {
            subButton.SetActive(isActive);
        }
    }

    void SlideSubButtons(bool isReverse = false)
    {
        for (int i = 0; i < subButtons.Length; i++)
        {
            RectTransform rectTransform = subButtons[i].GetComponent<RectTransform>();

            float mainBtnPosY = mainButton.GetComponent<RectTransform>().anchoredPosition.y;

            if (isReverse)
            {
                LeanTween.moveLocalY(rectTransform.gameObject, mainBtnPosY, 0.3f)
                    .setEase(LeanTweenType.easeInBack);
            }
            else
            {
                float targetPosition = mainBtnPosY+((i+1)*150);
                LeanTween.moveLocalY(rectTransform.gameObject, targetPosition, 0.3f)
                    .setEase(LeanTweenType.easeOutBack)
                    .setDelay(0.1f * i);
            }
        }
    }
}

3. mainButton에 트리거 버튼 넣기, subButtons에 펼쳐질 버튼들 넣기.
4. 확인하기

펼침 <-> 모으기

728x90
반응형
728x90

일단 class 파일을 만든다.

[System.Serializable]
public class WeaponData
{
public string nameEN;
public string nameKR;
public string desc; // 설명
public StatData[] levelStat;
public int level;

public WeaponData(WeaponData data){
    this.nameEN = data.nameEN;
    this.nameKR = data.nameKR;
    this.desc = data.desc;
    this.levelStat = data.levelStat;
    this.level = data.level;
}

}


// weaponData : 복사할 데이터
WeaponData[] weaponData = GameManager.instance.abilityDatabase.weapons;
// weaponCopyData : 복사된 데이터
WeaponData[] weaponCopyData = new WeaponData[weaponData.Length];

for (int i = 0; i < aa.Length; i++)
{
weaponCopyData[i] = new WeaponData(weaponData[i]);
}


이런 식으로 하면된다.
변수가 많으면 좀 귀찮긴해도 한 번만 만들어 두면 된다.

728x90
반응형
728x90

문제 : 잘되던 vscode가 open C# Project를 해도 반응없음.
원인 : vscode의 위치를 옮겼다.

1. 다시 원래 위치로 옮긴다.
2. 그게 싫으면 mac 기준으로 Unity > Settings로 Preferences를 열어준다.
    - window는 Edit에 있을 것임.

 

3. External Tools > External Script Editor에 이미 Visual Studio Code가 들어가 있겠지만 Browe로 경로를 다시 맞춰서 넣어준다

 


하지만 난 vscode파일 위치를 되돌렸다. 경로를 바꾸니 vscode에서 또 다른 경로 수정들이 있어서(나의 경우에는..) 귀찮아서 그냥 되돌림

728x90
반응형
728x90

문제 : Edit에 있던 preferences가 안보인다.
해결 : Edit이 아닌 Unity > Settings 에 있다... 

728x90
반응형

+ Recent posts