'Unity'에 해당되는 글 184건
- 2021.11.16 유니티 에셋번들
- 2021.11.15 포톤 메신저
- 2021.11.12 유니티 IAP
- 2021.11.06 A Star
- 2021.11.04 유니티 구글 스프레드 시트 연동
- 2021.10.23 유니티 기울기 관련
- 2021.10.16 유니티 RectTransform
- 2021.10.16 유니티 오디오 믹서
private int[,] _node_checker;
private float[,] _worth_p_worth2 ;
private Vector2 _now_pos;
private int[,] _parent_dir ;
private int map_wid = 1000;
private float[] _check_pos_len;
void Awake()
{
_worth_p_worth2 = new float[map_wid, map_wid];
_node_checker = new int[map_wid, map_wid];
_check_pos_len = new float[] { 1, 1.41421f, 1, 1.41421f, 1, 1.41421f, 1, 1.41421f };
_parent_dir = new int[map_wid, map_wid];
_now_pos = transform.position;
}
public int sc_8search(Vector2 pos)
{//sc_8search(x,y);
int _return = 0, _x = (int)pos.x, _y = (int)pos.y;
int check_x, check_y, i, _t;
for (i = 0; i < 8; i++)
{
check_x = _x + _check_pos_x[i];
check_y = _y + _check_pos_y[i];
if ((check_x < 0) || (check_x >= map_wid)
|| (check_y < 0) || (check_y >= map_wid))
{
continue;
}
if ((check_x == (int)move_point.x) && (check_y == (int)move_point.y))
{
_parent_dir[check_x, check_y] = i;
return 2;
}
if (_node_checker[check_x, check_y] <= 0)
{
float f_t = _worth[_x, _y] + _check_pos_len[i];
if (f_t < _worth[check_x, check_y])
{
_worth[check_x, check_y] = f_t;
if (_worth2[check_x, check_y] == -4)
{
_worth2[check_x, check_y] = Vector2.Distance(new Vector2(check_x, check_y), move_point);
}
_worth_p_worth2[check_x, check_y] = _worth[check_x, check_y] + _worth2[check_x, check_y];
_parent_dir[check_x, check_y] = i;
_return = 1;
}
_node_checker[check_x, check_y] = -1;
}
}
_node_checker[_x, _y] = 2;
return _return;
}
public void a_star(Vector2 pos)
{
for (int k = 0; k < 10000; k++)
{
//if(sc_8search_len(_now_x,_now_y,8)==2)
if (sc_8search(pos) == 2)
{
break;
}
bool _t = true;
for (int i = 0; i < map_wid; i++)
{
for (int j = 0; j < map_wid; j++)
{
if (_node_checker[i, j] == -1)
{
if (_t)
{
_now_pos.x = i;
_now_pos.y = j;
_t = false;
}
else
{
if (_worth_p_worth2[i, j] < _worth_p_worth2[(int)_now_pos.x, (int)_now_pos.y])
{
_now_pos.x = i;
_now_pos.y = j;
}
}
}
}
}
//if (_t)
{
//break;
}
}
}
너무 오래전에 짜서 개 난잡하게 되어있다... 후 언제 정리하지
구조가 거지같아서 그렇지 성능은 꽤나 최적화 되어있던걸로 기억한다
'Unity > C#' 카테고리의 다른 글
C# 메일 (0) | 2021.11.18 |
---|---|
유니티 기울기 관련 (0) | 2021.10.23 |
유니티 RectTransform (0) | 2021.10.16 |
먼저 공유 옵션을 설정한다
슬프게도 전체공개가 아니면 안 되는듯 하다
코드는 하단 링크를 사용한다
https://github.com/ahzkwid/SpreadsheetDownloader/blob/main/Assets/Ahzkwid/SpreadsheetDownloader.cs
만드느라 고생함
버튼으로 DownLoadStart함수를 실행하면 된다
다운로드 속도가 원체 빠른지라 별도 프로그레스는 안 넣음
key
sheetName
ㅅㄱ
'Unity' 카테고리의 다른 글
유니티 IAP (0) | 2021.11.12 |
---|---|
유니티 오디오 믹서 (0) | 2021.10.16 |
유니티 GPGS 연동 (0) | 2021.10.07 |
가속도센서 중력
//가속도센서 중력
Physics.gravity = Input.acceleration;
//가속도센서 2D중력
Physics2D.gravity = (Vector2)Input.acceleration;
핸드폰 방향
if (Input.deviceOrientation == DeviceOrientation.FaceUp)
{
//바닥에 놓은상태
}
else
{
//세워둔 상태
}
'Unity > C#' 카테고리의 다른 글
A Star (0) | 2021.11.06 |
---|---|
유니티 RectTransform (0) | 2021.10.16 |
C# 시리얼 (0) | 2021.10.11 |
float canvasHei = GetComponentInParent<Canvas>().GetComponent<RectTransform>().rect.height; //현재 캔버스의 높이를 반환
float oneCentimeterPixelCount = (1 / screenHeightCentimeter) * canvasHei //1센치에 대한 캔버스 픽셀사이즈를 반환
//RectTransform계열
float wid = GetComponent<RectTransform>().sizeDelta.x; //rect.width와 동일
float wid = GetComponent<RectTransform>().rect.width; //sizeDelta.x와 동일
textUI.rectTransform.anchoredPosition.x //일반적으로 생각하는 rectTransform의 x좌표
textUI.rectTransform.localPosition.x //Anchors가 미적용된 x좌표, 가급적 사용자제
textUI.rectTransform.rect.x //작동안함, anchoredPosition써라
사이즈 조정
public GameObject board;
var rectTransform = board.GetComponent<RectTransform>();
var sizeDelta = rectTransform.sizeDelta;
sizeDelta.y = 400;
rectTransform.sizeDelta = sizeDelta;
Rect 사이즈를 표시
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DrawRectSize : MonoBehaviour
{
public Color gizmoColor=Color.white;
void OnDrawGizmos()
{
// Draw a semitransparent blue cube at the transforms position
var rectTransform = GetComponent<RectTransform>();
if (rectTransform == null)
{
return;
}
var lossyScale = rectTransform.lossyScale;
float wid = rectTransform.rect.width;
float hei = rectTransform.rect.height;
var pivot = rectTransform.pivot;
Vector3 downPos = transform.up * lossyScale.y * hei * (pivot.y - 1);
Vector3 upPos = transform.up * lossyScale.y * hei * pivot.y;
Vector3 leftPos = transform.right * lossyScale.x * wid * (pivot.x - 1);
Vector3 rightPos = transform.right * lossyScale.x * wid * pivot.x;
Gizmos.color = gizmoColor;
Gizmos.DrawLine(transform.position + downPos + leftPos, transform.position + upPos + leftPos);
Gizmos.DrawLine(transform.position + downPos + rightPos, transform.position + upPos + rightPos);
Gizmos.DrawLine(transform.position + downPos + leftPos, transform.position + downPos + rightPos);
Gizmos.DrawLine(transform.position + upPos + leftPos, transform.position + upPos + rightPos);
}
}
특정 시야각만큼 차지하는 RectSize를 가져옴
(Canvas, Camera) GetCanvasCamera()
{
var canvas = GetComponentInParent<Canvas>();
var camera = canvas.worldCamera;
if (camera == null)
{
camera = Camera.main;
}
return (canvas,camera);
}
Vector2 GetRectSize(float angle)
{
(Canvas canvas, Camera camera) = GetCanvasCamera();
if (camera == null)
{
return Vector2.zero;
}
var canvasSize = canvas.GetComponent<RectTransform>().rect.size;
var worldPos = camera.transform.position + camera.transform.rotation * (Quaternion.Euler(angle, 0, 0) * Vector3.forward * 2);
{
//debug
var worldPosb = camera.transform.position + camera.transform.rotation * (Quaternion.Euler(-angle, 0, 0) * Vector3.forward * 2);
Debug.DrawLine(camera.transform.position, worldPos, Color.yellow);
Debug.DrawLine(camera.transform.position, worldPosb, Color.yellow);
Debug.DrawLine(worldPos, worldPosb, Color.yellow);
}
var screenPos = camera.WorldToScreenPoint(worldPos);
var center = camera.ViewportToScreenPoint(Vector2.one * 0.5f);
var screenSize = camera.ViewportToScreenPoint(Vector2.one);
var newSize = Vector2.one * Mathf.Abs(center.y - screenPos.y) * 2;
newSize *= canvasSize.y / screenSize.y;
return newSize;
}
화면상 RectTransform의 위치
GetComponent<RectTransform>().position //절대적
GetComponent<RectTransform>().localPosition //상대적
'Unity > C#' 카테고리의 다른 글
유니티 기울기 관련 (0) | 2021.10.23 |
---|---|
C# 시리얼 (0) | 2021.10.11 |
C# Delegate와 IEnumerator (0) | 2021.10.11 |
에셋폴더에 우클릭해서 믹서를 만든다
DefaultMixer라고 지었다
Resources폴더 하위로 한 이유는 에셋번들 미포함이기 때문
AudioMixer창을 연다
아까 만든 믹서를 선택하고 그룹 생성을 누른다
BGM과 SE를 할당해준다
Music과 Effect라고 해줘도 된다
에셋폴더에서 방금 만든 그룹을 인스펙터에서 볼륨에 대고 우클릭하면
저렇게 뜨는데 Expose해준다
대강 스크립트에서 볼륨을 조작해주겠다는 의미이다
다시 오디오 믹서 오른쪽 위로 가면 Expose해준 파라미터들이 보인다
가급적 그룹명과 동일하게 해주자
변수를 이용하여 조작할것이므로 소문자로 했다 (C# 표준규약)
다음과 같은 컴포넌트를 만든다
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
public class MixerTest : MonoBehaviour
{
public AudioMixer mixer;
[Range(-80,0)]
public float master = 0;
[Range(-80, 0)]
public float bgm = 0;
[Range(-80, 0)]
public float se = 0;
public void MixerControl()
{
mixer.SetFloat(nameof(master), master);
mixer.SetFloat(nameof(bgm), bgm);
mixer.SetFloat(nameof(se), se);
}
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
MixerControl();
}
}
이제 사운드에다가 믹서를 할당해줄차례다
아까만든 컴포넌트를 얹고 믹서를 할당해주자
DnD가 안 먹히니까 옆에 땡글뱅이 눌러서 할당해야한다
실행하고 인스펙터를 만지면 쭈왑하고 볼륨이 조정된다
'Unity' 카테고리의 다른 글
유니티 구글 스프레드 시트 연동 (0) | 2021.11.04 |
---|---|
유니티 GPGS 연동 (0) | 2021.10.07 |
구글플레이에 앱 등록하기 2021 (0) | 2021.10.05 |