Unity 2017 UGUI 로 돌 림 판 추첨 실현

본 논문 의 사례 는 유 니 티 2017 이 룰렛 추첨 을 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
관련 플러그 인:Dotween
"Hierarchy"패 널 에 Image 를 만 듭 니 다.이 Image 는 큰 돌 림 판 의 원반 을 표시 하 는 데 사 용 됩 니 다.제 가 사용 하 는 UGUI 에서 기본 으로 사용 하 는 동 그 란 그림 은 확대 한 후에 모호 하지만 괜 찮 습 니 다.

이 어 패 널 이름 을 만 들 고'상품 팀'으로 바 꿨 습 니 다.이 건 상품 의 부모 물체 입 니 다.기억 하 세 요 패 널 의 Image,Canvas Renderer 구성 요 소 를 삭 제 했 습 니 다.
그리고 Panel 이름 을 만 들 고"Awar"로 바 꾸 고 상품 을 만 드 는 똑 같은 이미지,CanvasRenderer 구성 요 소 를 삭제 합 니 다.
그리고 Awar 에서 Image,Text 를 만 들 고 각각 이름 을'Ico,desc'로 바 꾸 고 원 하 는 효 과 를 설정 합 니 다.제 가 설정 한 Ico 위,Desc 아래.
그림:

구성 도:
 
*주의해 야 할 점:Awar 의 작은 파란색 점 을 원반 의 중심 으로 이동 합 니 다.그림 참조:

이 단계 에서 뒤의 자동 생 성 코드 생 성 을 하지 않 으 면 안 됩 니 다.
그리고 코드 쓰기:생 성 된 스 크 립 트

public class GenerateAwar:MonoBehaviour{
 public GameObject AwarGameObject; //     Awar  
 public int Count = 10; //     ,                 

 void OnEnable ()
 {
 var angle = 360 / Count; //        Z   
 var additionAngle = 0; //    
 for (var i = 0; i < Count; i++)
 {
  var obj = Instantiate(AwarGameObject);
  additionAngle = angle + additionAngle;
  obj.transform.Rotate(Vector3.forward,additionAngle);
  Log.Error(obj.transform.localRotation.eulerAngles.z);
  obj.transform.SetParent(transform,false);
  obj.SetActive(true);
 }
 }
}
그리고'상품 팀'에 걸 어 주세요.
예:

그 상품 이 바로 Awar 입 니 다.제 이름 이 바 뀌 지 않 습 니 다.유 니 티 의 문제 인 것 같 습 니 다.와 하하 하.
그리고 실행 하면 그림 과 같은 효 과 를 볼 수 있 습 니 다.

그리고 중심 에 바늘 을 놓 고 스 크 립 트 를 만 듭 니 다:회전 포인터 스 크 립 트

//          ,
//        Button             SetTime  
public class RotatePointer : MonoBehaviour
{

 private bool _isRotate = false;//    
 public float ContinuousTime = 2;//    
 public float Speed = 2000;//    
 public float Angle = 0; //           
 private float _time;
 // Update is called once per frame
 void Update () {

 if (!_isRotate)return; //     

 if (Time.time < _time) //    
 {
  transform.Rotate(Vector3.forward * Speed * Time.deltaTime);
 }
 else
 {
 //  ,  DoTween       ,  1 
 //    360,          ,      360,        
  transform.DORotate(new Vector3(0, 0, 360 + Angle), 1f, RotateMode.FastBeyond360);
  _isRotate = false; //      
 }
 }

 //    ,          
 public void SetTime()
 {
 _time = Time.time + ContinuousTime;
 _isRotate = true;
 }
 //    ,      
 public void SetAngle(float angle)
 {
 Angle = angle;
 }
}
포인터:

시작 단추:

컴퓨터 에 움 직 이 는 그림 을 만 드 는 소프트웨어 가 별로 없 기 때문에 효과 가 있 으 면 끝 내 겠 습 니 다.한 장 회전 하 겠 습 니 다.
회전:

끝:

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기