Line Renderer 라인 렌더러 설정하기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Line : MonoBehaviour
{
public Transform target;
public Color c1 = Color.yellow;
LineRenderer LR;
void Start()
{
LR = GetComponent<LineRenderer>();
LR.widthMultiplier = 0.1f; //선 너비
LR.startColor = c1; //선 시작점 색
LR.endColor = c1; //선 끝점 색
}
void Update()
{
if (Input.GetMouseButton(0))
{
LR.SetPosition(0, transform.position); //시작 위치
LR.SetPosition(1, target.position); //목표 위치
//0과 1은 인덱스 번호, 해상도 라인 개수
}
else
{
LR.SetPosition(1, transform.position);
}
}
}
마우스 왼쪽 클릭 시 Cube에서 Cube1으로 LineRederer가 연결되도록 하는 코드를 작성했다. Cube에 LineRederer 컴포넌트를 추가해주고 target에 Cube1을 매핑해준다.
라인 렌더러 설정 시 에러 발생 원인 및 해결 방법
코드를 작성하면서 2가지 에러가 발생했다.
error CS1061: Type LineRenderer' does not contain a definition for material' and no extension method material' of type LineRenderer'
먼저 CS1061에러는 유니티에서 기본적으로 제공하는 클래스 명과 충돌이 났을때 발생하는 에러코드이다. 스크립트 이름을 LineRederer로 작성했더니 유니티 LineRenderer 클래스 명과 겹쳐서 충돌난 것이었다. 이러한 문제는 스크립트 명만 다른 이름으로 바꾸어주면 된다.
https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2008/bb383961(v=vs.90)
error CS0542 : "member names cannot be the same as their enclosing type"
Class나 Stuct를 Constructors라고 부르는데 이런 constructor가 return type을 가지고 있지 않는 경우, methond처럼 다루어진다고 한다. 즉, 해당 문제는 Class와 method가 같을 때 발생한다고 보면 될 것 같다. 클래스 명을 LR, 메서드의 멤버 변수 역시 LR로 작성해서 충돌이 난 것 같다. 이런 경우 클래스명 또는 변수 이름을 서로 다르게 만들어주니 해결되었다.
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/constructors
'게임 프로그래밍 > 유니티 프로젝트' 카테고리의 다른 글
유니티 Render Texture를 사용하여 Scope 만들기 (1) | 2021.10.29 |
---|---|
유니티 progress 바 설정하기 (0) | 2021.10.28 |
유니티 Ray/RaycastHit 충돌 체크 (0) | 2021.10.28 |
유니티 Scene 전환하기 (0) | 2021.10.22 |
유니티 UI Layout Group 종류 및 옵션 값 설정하기 (0) | 2021.10.22 |