최근 24시간 기준으로 설정했을때

한국은 UTC+9시간 이기때문에 표 x축 시간에 +9시간을 하면된다.

하지만 더했는데 두 시간의 차이가 있을거다.

완전 실시간이 아닌 점..!

 

내 컴은 Mac이고, icloud 자동 동기화를 하고 있는데, 이거 때문이다.

 

build한 폴더를 다른 경로로 옮긴다음에 다시 열어 보면 열린다.

예를 들어 Desktop위치로 옮기면 열린다.

 

 

 

 

A 프로젝트 작업하다가 B 프로젝트 가면 간혹 무한로딩을 하는디... 


다른 에러가 뜨지 않는다면....

일단, 기다려보삼...

 

나 같은 경우는 한 20분 가량 기다려본적 있다ㅏ... ㅋㅋㅋ

어차피 강제종료하고 다시 켜봤자 똑같으니까.

그냥 믿고 기다리삼.

 

다음 부터는 다시 잘 열릴테니까... (아닐때도 있었음 따흑)

Privacy Policy

This privacy policy applies to the BreakLog app (hereby referred to as "Application") for mobile devices that was created by leeroom shin (hereby referred to as "Service Provider") as a Free service. This service is intended for use "AS IS".

Information Collection and Use

The Application collects information when you download and use it. This information may include information such as

  • Your device's Internet Protocol address (e.g. IP address)
  • The pages of the Application that you visit, the time and date of your visit, the time spent on those pages
  • The time spent on the Application
  • The operating system you use on your mobile device

The Application does not gather precise information about the location of your mobile device.

The Application collects your device's location, which helps the Service Provider determine your approximate geographical location and make use of in below ways:

  • Geolocation Services: The Service Provider utilizes location data to provide features such as personalized content, relevant recommendations, and location-based services.
  • Analytics and Improvements: Aggregated and anonymized location data helps the Service Provider to analyze user behavior, identify trends, and improve the overall performance and functionality of the Application.
  • Third-Party Services: Periodically, the Service Provider may transmit anonymized location data to external services. These services assist them in enhancing the Application and optimizing their offerings.

The Service Provider may use the information you provided to contact you from time to time to provide you with important information, required notices and marketing promotions.

For a better experience, while using the Application, the Service Provider may require you to provide us with certain personally identifiable information. The information that the Service Provider request will be retained by them and used as described in this privacy policy.

Third Party Access

Only aggregated, anonymized data is periodically transmitted to external services to aid the Service Provider in improving the Application and their service. The Service Provider may share your information with third parties in the ways that are described in this privacy statement.

Please note that the Application utilizes third-party services that have their own Privacy Policy about handling data. Below are the links to the Privacy Policy of the third-party service providers used by the Application:

The Service Provider may disclose User Provided and Automatically Collected Information:

  • as required by law, such as to comply with a subpoena, or similar legal process;
  • when they believe in good faith that disclosure is necessary to protect their rights, protect your safety or the safety of others, investigate fraud, or respond to a government request;
  • with their trusted services providers who work on their behalf, do not have an independent use of the information we disclose to them, and have agreed to adhere to the rules set forth in this privacy statement.

Opt-Out Rights

You can stop all collection of information by the Application easily by uninstalling it. You may use the standard uninstall processes as may be available as part of your mobile device or via the mobile application marketplace or network.

Data Retention Policy

The Service Provider will retain User Provided data for as long as you use the Application and for a reasonable time thereafter. If you'd like them to delete User Provided Data that you have provided via the Application, please contact them at dlfna1111@gmail.com and they will respond in a reasonable time.

Children

The Service Provider does not use the Application to knowingly solicit data from or market to children under the age of 13.

The Application does not address anyone under the age of 13. The Service Provider does not knowingly collect personally identifiable information from children under 13 years of age. In the case the Service Provider discover that a child under 13 has provided personal information, the Service Provider will immediately delete this from their servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact the Service Provider (dlfna1111@gmail.com) so that they will be able to take the necessary actions.

Security

The Service Provider is concerned about safeguarding the confidentiality of your information. The Service Provider provides physical, electronic, and procedural safeguards to protect information the Service Provider processes and maintains.

Changes

This Privacy Policy may be updated from time to time for any reason. The Service Provider will notify you of any changes to the Privacy Policy by updating this page with the new Privacy Policy. You are advised to consult this Privacy Policy regularly for any changes, as continued use is deemed approval of all changes.

This privacy policy is effective as of 2024-10-21

Your Consent

By using the Application, you are consenting to the processing of your information as set forth in this Privacy Policy now and as amended by us.

Contact Us

If you have any questions regarding privacy while using the Application, or have questions about the practices, please contact the Service Provider via email at dlfna1111@gmail.com.


This privacy policy page was generated by App Privacy Policy Generator

 

 

애드몹 테스트 아이디를 넣었을땐 문제 없는데, 실제 Id를 넣게 되면 이런 에러가 뜰 수가 있다.

 

1. ATT를 제대로 설정 해놨는지 확인해보자.(https://loomiloomi.tistory.com/42)

2. 리워드광고 인데 리워드 전면 광고로 만든건 아닌지 확인해보기..

 

나는 둘다 겪어봤다... 쒯.! 결국 휴먼이슈!

 

 

아래 코드를 사용하면 된다.

Application.systemLanguage;

 

 

이걸 찍어보면 난 한국에 있기 때문에 Korean 으로 나온다.

다른 나라 이름은 아래 링크에 정리에 되어 있다.

 

https://docs.unity3d.com/ScriptReference/SystemLanguage.html

 

 

두번째 사람부터 방을 못들어가면서 이런 에러가 나왔다.

보면 SQL logic error no such column: XXX 라고 되어 있다는 건, 컬럼 XXX가 없단다.

// 실제 방 생성  
void CreateRoom()  
{  
RoomOptions roomOptions = new RoomOptions();  
roomOptions.MaxPlayers = (byte)desiredMaxPeople; // 방 최대 인원 설정

    // 방의 사용자 정의 속성 설정
    Hashtable customProperties = new Hashtable
    {
        { "AA", "A값" },
        { "BB", "B값" },
        { "CC", "C값" }
    };

    roomOptions.CustomRoomProperties = customProperties;
    roomOptions.CustomRoomPropertiesForLobby = new string[] { "AA", "BB", "CC" };

    // 방 생성 시 올바른 로비 타입과 설정 사용
    PhotonNetwork.CreateRoom(null, roomOptions, selectLobby); // SQL 로비에서 방 생성
    Debug.Log("새로운 방을 생성했습니다.");
}

 

대강 이런식으로 방을 생성한다고 쳤을때, 내가 임의로 적어 넣은 컬럼명 AA, BB, CC가 문제였던 것이다.
C0, C1, C2이런식으로 해야 한단다.
문서에 써있다.

그럼 빠이



 

원하는 거: 그냥 단순히.. 슬라이더를 원형으로 하고 싶었고 핸들을 잡고 직접 돌리고 싶다.

아래 사진 참고.

 

검은 점을 잡고 돌리는 슬라이더

 

내가 원하는 건 위 사진의 검은 점을 잡고 원형으로 돌렸을때, 그 위치를 따라오면서 원의 값이 바뀌었으면 했다.

원리를 쉽게 말하자면 아래 사진을 보면 된다.

내 마우스의 위치가 A에 있을때 B에 해당하는 위치에 슬라이더 값이 있어야 한다는 뜻이다.

 

슬라이더 핸들이 드래그 중인 마우스의 위치와 직선상에 있어야 한다는게 포인트.

 

 

 

소스를 바로 봐 보자.

Canvas의 Render Mode가 Camera인 경우

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class CircularSlider : MonoBehaviour, IDragHandler, IPointerDownHandler
{
    public RectTransform handle; // 핸들 오브젝트
    public RectTransform centerPoint; // 중심점 오브젝트(따로 깡통 오브젝트 만들기)
    public Canvas canvas; // 현재 사용 중인 캔버스
    public Text valueText; // 값을 표시할 텍스트
    public Image fillImage; // 모드가 Radial 360 fill인 이미지

    public int maxChips = 280; // 최대 값 (100%에 해당)
    private float radius; // 중심점과 핸들 사이의 고정된 거리 (반지름)
    private float maxAngle = 260f; // 최대 각도 (260도)
    private float currentAngle = 0f; // 현재 핸들의 각도

    void Start()
    {
        // 중심점과 핸들 사이의 초기 거리(반지름)를 계산
        radius = Vector2.Distance(handle.anchoredPosition, centerPoint.anchoredPosition);
        UpdateHandlePosition(maxAngle); // 초기 위치를 0%로 설정
    }

    public void OnPointerDown(PointerEventData eventData)
    {
        UpdateHandlePosition(eventData);
    }

    public void OnDrag(PointerEventData eventData)
    {
        UpdateHandlePosition(eventData);
    }

    private void UpdateHandlePosition(PointerEventData eventData)
    {
        // 마우스의 화면 좌표를 캔버스의 로컬 좌표로 변환
        Vector2 localMousePosition;
        RectTransformUtility.ScreenPointToLocalPointInRectangle(centerPoint, eventData.position, canvas.worldCamera, out localMousePosition);

        // 중심점에서 마우스 위치 사이의 벡터를 계산
        Vector2 direction = (localMousePosition - (Vector2)centerPoint.anchoredPosition).normalized;

        // 마우스 위치로부터 각도 계산 (0~360도)
        float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
        if (angle < 0) angle += 360; // 각도를 0~360도로 조정

        // 시계방향으로 돌 때 각도 제한
        if (angle > maxAngle)
        {
            currentAngle = maxAngle; // 시계방향으로 최대값을 넘어가면 멈춤
        }
        else
        {
            currentAngle = Mathf.Clamp(angle, 0, maxAngle);
            // 핸들의 새로운 위치 계산: 중심점에서 방향 벡터에 반지름을 곱한 거리만큼 이동
            Vector2 newPosition = (Vector2)centerPoint.anchoredPosition + new Vector2(Mathf.Cos(currentAngle * Mathf.Deg2Rad), Mathf.Sin(currentAngle * Mathf.Deg2Rad)) * radius;

            // 핸들의 위치를 업데이트
            handle.anchoredPosition = newPosition;

            // 현재 값 및 이미지 업데이트
            UpdateValueText();
            UpdateFillImage();
        }

    }

    private void UpdateHandlePosition(float angle)
    {
        // 초기 위치 설정 함수
        currentAngle = angle;
        Vector2 newPosition = (Vector2)centerPoint.anchoredPosition + new Vector2(Mathf.Cos(currentAngle * Mathf.Deg2Rad), Mathf.Sin(currentAngle * Mathf.Deg2Rad)) * radius;
        handle.anchoredPosition = newPosition;
        UpdateValueText();
        UpdateFillImage();
    }

    private void UpdateValueText()
    {
        // 각도를 최대 칩 수로 변환하여 텍스트 업데이트
        // currentAngle이 최대일 때 0이 표시되도록 반대로 계산
int currentValue = Mathf.RoundToInt((1 - (currentAngle / maxAngle)) * maxChips);

        valueText.text = currentValue.ToString();
    }

    private void UpdateFillImage()
    {
        // 각도를 0에서 1 사이의 값으로 변환하여 Radial Fill에 적용
        // FillAmount는 핸들이 움직인 비율로 설정해야 합니다.
        fillImage.fillAmount = currentAngle / 360;
    }
}

 

 

 

주석을 친절히 써놨으니, 대강 알것이다...

 

 

 

결과물:

근데 지금 보니 내가 색상을 반대로 해놨네;; 숫자가 올라갈때 색상이 채워져야 하는데ㅇㅅㅇ ㅋㄷㅋㄷ

뭐 아무튼..

 

UI는 정말 딱 참고만 하시고...

내가 한 방법은.

두 개의 원 이미지를 만들고 레이어상 뒤에 원을 크게 만들어서 지금처럼 초록색을 넣고 모드를 radial 360 fill로 넣었다. 

핸들은 0이어야 하는 지점에 미리 가져다 놓았다.

+ Recent posts