화북대학교 소프트웨어 구조 U+ 및 클래스 코드에 대한 자세한 설명

과제 1

1. 데이터 유형은 원자 유형과 구조 유형의 두 가지 범주로 나눌 수 있습니다.
2. (데이터 구조)란 컴퓨터가 데이터를 저장하고 구성하는 방식으로, 서로 하나 이상의 특정한 관계를 갖는 데이터 요소의 집합을 의미합니다.
3. 코드 재구성이란 프로그램의 (구조)를 변경하지 않고 변경하는 것을 말합니다. 그 동작은 코드의 가독성, 수정 용이성 등을 향상시키는 것입니다.
4. 소프트웨어 구현과 일반적인 프로그래밍의 주요 차이점은 소프트웨어(소프트웨어 통합 및 테스트)입니다.
5. 교과서에 따르면 애자일 개발은 테스트 중심 개발 등과 같은 몇 가지 새로운 기술이나 관행을 창출했지만 여기에는 포함되지 않습니다. ( 소프트웨어 아키텍처 )
6. 화이트박스 테스트에서는 다음 사항을 보장하지 않습니다(기능이 올바르지 않거나 누락됨)
7. 화이트박스 테스트 방법을 사용할 경우 테스트 데이터는 (프로그램 내부 로직) 및 지정된 커버리지 표준에 따라 결정되어야 합니다.
8. 화이트박스 방식 중 흔히 사용하는 방식은 (경로 테스트) 방식이다.
9. (단위) 테스팅에는 화이트박스 테스팅 방법이 일반적으로 사용된다
. 10. 단위 테스팅을 수행할 때 일반적으로 사용되는 방법은 (화이트박스 테스팅을 사용하고, 블랙박스 테스팅으로 보완)
11. 조건 테스팅 오류에 대하여 (조건에는 다음이 포함된다. 오류에 인터페이스 오류가 있습니다.)
12. 파일 할당 작업을 완료하려면 다음 네 단계를 준비하십시오. (2134) ① 바이트 스트림 입력 스트림을 소스 파일과 연결하고 출력 스트림을 대상 파일과 연결합니다. ② 소스파일과 타겟파일을 명확히 한다. ③ 입력 스트림의 읽기 방법을 사용하여 파일을 읽고 해당 바이트를 대상 파일에 씁니다. ④ 리소스를 닫습니다.
13.다음 옵션 중 명령줄 상호 작용(Windows 스케치패드)이 아닌 것은 무엇입니까?
14. 다음 중 입력 장치이자 출력 장치(카메라)인 장치는 무엇입니까?
15. 일반적인 소프트웨어 설치 프로세스에서는 사용자가 단계별로 데이터를 구성하고 "다음"을 클릭해야 합니다. 이는 (명령줄 상호 작용)
16입니다. 다음 중 해당사항 없음 평가의 목적은 (제품 개발 과정 전체에서 사용자의 요구를 고려할 수 있음을 보장하는 것)
17. 사용성(Usability)은 제품 기능이 기본적으로 완전함을 보장하며, 사용 편의성을 평가하는 측정 속성입니다. 사용자 인터페이스의. 사용성에는 5가지 특성이 있으며 그 중 가장 기본적인 사용성 속성은 사용 효율성입니다.
18. 다음 설명 중 틀린 것은 무엇입니까(인간-컴퓨터 상호 작용의 발전으로 인해 새로운 상호 작용 방법이 등장했으며 기존 방식은 더 이상 필요하지 않음)
19. 다음 중 사용자의 기다림 감각을 줄일 수 있는 디자인은 무엇입니까? 위의 내용은 허용됨)
20. 다음은 정적입니다 테스트 대상(코드 테스팅)
21. 소프트웨어 테스팅 기술은 정적 테스팅과 동적 테스팅으로 나눌 수 있습니다 다음 중 틀린 설명은 무엇입니까 (화이트 박스 테스팅은 정적 테스팅, 블랙 박스 테스팅은 22. 소프트웨어 테스팅
방법은 테스팅 프로세스를 따른다. 프로그램을 실행할 것인지는 동적 테스팅과 (정적 테스팅)로 나누어진다.
23. 테스팅에 관한 다음 설명 중 옳은 것은 무엇인가 (정적 테스팅은 프로그램을 실행하지 않는 프로세스이다) 테스트 중인 프로그램 자체는 테스트 중이지만 프로그램 코드에서 발생할 수 있는 오류를 찾거나 프로그램 코드를 평가합니다)
24. 정식 리뷰가 아닌 다음 방법은 (코딩 표준 및 사양)입니다.
25. 피어 리뷰에 대한 올바른 설명은 (프로그램 코드의 목적)입니다. Peer Review는 제품의 결함을 발견하는 것이므로 Review에 투자하면 이후의 재작업을 많이 줄일 수 있습니다.)
26. (기술 검토)는 소프트웨어 품질 향상을 목적으로 하는 기술 활동입니다.
27. 통합 테스트는 모든 모듈을 시스템으로 조립하거나 (단위 테스트)을 기반으로 설계 요구 사항에 따라 하위 시스템을 테스트하고 모듈 조립 프로세스 및 모듈 인터페이스의 정확성을 확인합니다.
28. 소프트웨어 테스팅 단계에서 테스팅 단계는 순서대로 다음과 같은 단계로 나눌 수 있습니다: (단위 테스팅, 통합 테스팅, 시스템 테스팅, 수용 테스팅)
29. 재구성이란 무엇이며, 어떤 진술이 올바른가? 함수(소프트웨어) 관찰 가능한 동작을 전제로 코드의 내부 구조를 수정하여 코드를 더 쉽게 이해하고 유지 관리하고 확장할 수 있습니다.
30. "테스트 중심 개발"과 관련하여 다음 설명 중 잘못된 것은 무엇입니까(TDD의 목적은 소프트웨어를 테스트하고 코드 품질을 보장하는 것입니다).


과제 2


1. 소프트웨어는 기능에 따라 (시스템 소프트웨어), 지원 소프트웨어, 응용 소프트웨어의 세 가지 유형으로 구분됩니다.
2. 소프트웨어는 서비스 대상 범위에 따라 프로젝트 소프트웨어(맞춤형 개발)와 (제품 소프트웨어)(또는 일반 소프트웨어)로 구분됩니다.
3. 사용자 관점에서 소프트웨어 수명주기는 다음과 같은 세 단계로 구분됩니다. ), 소프트웨어 취득, 소프트웨어 사용.
4. 소프트웨어 설계는 요구 사항을 실현하는 방법에 대한 결정과 계획을 제공하는 것입니다. 시스템 기능을 시스템의 다양한 구성 요소에 할당하는 프로세스입니다. 여기에는 일련의 활동이 포함됩니다: 1. 요구 사항 분할 2. 하위 시스템 결정 3. 요구 사항 할당 4. 서브시스템 정의 기능 ⑤(서브시스템 기능 정의)
5. 소프트웨어 유지보수는 교정정비(적응정비), 완전정비, 예방정비 4가지로 구분된다.
6. 소프트웨어 수명주기 모델이라고도 불리는 폭포수 개발 프로세스. 소프트웨어 라이프사이클에 따라 개발을 계획, 수요 분석, 소프트웨어 설계, 프로그램 작성(소프트웨어 테스트), 운영 및 유지 관리 등 6가지 기본 활동으로 나누고 이들의 하향식, 고정된 상호 연결 순서를 규정합니다. 물, 단계적으로 떨어지는.
7. 애자일 개발은 빠르게 변화하는 요구사항에 대응하는 소프트웨어 개발 역량입니다. (사용자 요구의 진화)를 핵심으로 삼고 소프트웨어 개발에 대한 반복적이고 단계별 접근 방식을 채택합니다.
8. 다음 중 시간 공유 기능, 상호 작용 및 일괄 처리 기능 중 소프트웨어에 포함될 수 있는 기능은 무엇입니까?
9. 소프트웨어 개발자의 관점에서 소프트웨어 수명 주기는 일반적으로 다음 세 단계로 나뉩니다. 소프트웨어 정의 , 소프트웨어 개발 및 소프트웨어 유지 관리
10. 고급 프로그래밍 언어에는 다양한 분류가 있습니다. 분류 표준 중 하나는 고급 언어를 언어의 컴퓨팅 모델에 따라 선언적 언어와 명령적 언어라는 두 가지 주요 범주로 나누는 것입니다.


과제 3:


1. 모듈화는 현대 소프트웨어 개발 기술의 기본 원칙입니다. (기능)은 소프트웨어 모듈화를 달성하기 위한 기본 수단입니다.
2. 기능의 각 처리 요소는 동일한 기능과 밀접하게 연관되어 순차적으로 실행되어야 하며, 이전 기능 요소의 출력은 다음 기능 요소의 입력이 됩니다. 즉, 하나의 기능이 여러 기능을 완성하며, 이러한 기능은 반드시 다음 중 응집의 종류(순차 응집)는 무엇입니까
3. 함수 그룹은 모두 동일한(전역 단순 변수)가 아닌 동일한(전역 데이터 구조)에 액세스하며 전역 변수의 정보는 그렇지 않습니다. 매개변수를 통과하는데 이를 외부 결합이라고 합니다.
4. 배열을 사용하여 다양한 수식을 "연습"으로 저장하는 경우 다양한 수식으로 80개의 연습을 생성할 때 수식 비교 횟수는 (3160)입니다.
5. 테스트 요구 사항에서는 프로그램의 예상 결과와 실제 실행 결과가 명확해야 합니다. 합리적이고(관찰 가능) 비교할 수 있습니다.
6. 프로그래밍과 소프트웨어 개발의 실제와 이론에는 (데이터) 중심과 운영 중심의 개발 방식이 있었습니다.
7. 모듈화는 문제를 하위 문제(테스트 용이, 제어 용이, 이해 용이)로 분해하는 중요한 수단이며 복잡성을 제어하는 ​​방법입니다.
8. 모듈은 (호환성, 다양성, 독립성) 세 가지 주요 특성을 가지고 있습니다.
9. 프로그래밍과 소프트웨어 개발의 실제와 이론에는 (데이터) 중심과 (운영) 중심의 개발 방식이 있었습니다.
10. 설계 방법이 효과적인 모듈 시스템의 능력을 정의하는지 여부를 평가하기 위해 Meyer가 제안한 기준은 모듈 보호, 모듈 분해성, 모듈 연속성입니다.


과제 4:


1. (추상화)는 클래스를 설계하는 기본 방법으로 문제에 집중하고 다른 문제는 무시할 수 있습니다.
2. (다형성)은 유형 이론의 개념입니다. 이름은 공통 슈퍼클래스를 갖고 관련되어 있는 한 서로 다른 클래스의 여러 인스턴스를 나타낼 수 있습니다.
3. 객체 지향 소프트웨어를 사용하여 소프트웨어를 개발할 때 일반적으로 기본 속성 및 (메서드)를 포함하는 클래스를 먼저 설계합니다. 그런 다음 클래스가 사용됨에 따라 클래스와 해당 인터페이스를 보완, 수정 또는 개선해야 한다는 것을 알게 될 것입니다.4.
UML에서 클래스는 클래스 이름, 선택적 속성 및 작업이 포함된 직사각형으로 표시됩니다
.5 하위 유형은 기본 유형을 대체할 수 있어야 합니다. 이 아이디어는 상속 메커니즘에 대한 제약 조건과 사양을 구현하며, 하위 클래스가 기본 클래스를 대체할 수 있는 경우에만 시스템이 런타임 중에 하위 클래스를 인식할 수 있도록 보장할 수 있으며, 이는 상속 재사용을 보장하는 기반입니다. 이것이 (리히터 치환) 원리이다.
6. (프로세스 지향) 언어는 주로 데이터 범위, 파일 패키지 등을 통해 데이터를 보호하며, 프로그램의 다른 부분에서 내부 데이터와 데이터 구조의 멤버를 마음대로 수정하는 것을 허용하지 않습니다.
7. 클래스의 인터페이스는 공개, 보호, 비공개(패키지)의 4가지 범주로 더 나눌 수 있습니다.
8. 각 프로그래밍 언어의 개발 도구 키트는 일반적으로 기본(디버거)을 제공합니다.
9. 모든(디버거)는 다음을 수행할 수 있는 기능입니다. 코드를 스캔하고 일반적인 오류를 찾아보세요.
10. 아래 DIP(종속성 역전 원칙)와 관련하여 올바른 설명은 다음과 같습니다(상위 수준에서는 하위 수준 함수를 호출하고, 하위 수준 모듈은 구현을 담당하며, 상위 수준 모듈은 인터페이스를 정의합니다).


과제 5:


1. Animator 클래스의 (속도) 속성을 사용하여 애니메이션 재생 속도를 얻을 수 있습니다.
2. UI에서 일반적으로 사용되는 UI 객체의 종류(텍스트 버튼)
3. 장면 창의 의미(장면) 디자인 보기)
4. Unity에서는 장면의 게임 객체에 다양한 계층 관계를 추가할 수 있습니다. 이 기능을 구현하는 시스템은 (레이어 계층 시스템)입니다.
5. Unity에서 게임 객체 GameObject는 (컴포넌트)로 구성됩니다.
6. 강체가 활성화됩니다. 물체의 물리적 특성을 구성하는 주요 구성 요소입니다. 강체에 바인딩된 게임 개체는 Unity에서 물리적 효과를 받습니다. 정답
7. 인스펙터 창의 의미(속성)
8. 트리거와 콜라이더의 차이점은 객체를 차단할 수 있는지 여부이며, 콜백 함수도 다르다(올바름)
9. 입력.GetKey(KeyCode.S);는 길다는 뜻 키보드에서 S 키를 누르세요. 정답
10. 장면이 완성된 후 프로그램을 패키징(퍼블리시)하고 (빌드 설정)을 선택해야 합니다.
11. Unity3D는 플레이어가 인터랙티브한 콘텐츠를 쉽게 만들 수 있는 개발 도구인 (3D 엔진) 소프트웨어입니다.
12. 장면이 저장되면 프로그램을 패키징(퍼블리시)하고 (Build & Run)을 선택해야 합니다
13. Unity에 새로운 리소스 자료가 추가될 때마다 엔진은 어떤 파일을 자동으로 생성합니까?(메타데이터)
14. Unity3D에서 ALT+마우스를 길게 누르기 마우스 오른쪽 버튼 클릭(확대/축소)을 통해 뷰에서 수행할 수 있는 작업은 무엇입니까
? 15. Prefab에 대한 다음 설명 중 잘못된 것은 무엇입니까? Prefab은 특별한 게임 객체입니다.
16. Scene Editor에서 직접 생성할 수 없는 모델은 무엇입니까?(Mesh)
17. 한 객체에는 Collider가 있고 다른 객체에는 Rigidbody가 있는 한 정상적으로 발생할 수 있습니다. (오류)
18. 카메라 구성 요소의 어떤 속성이 시야각(fov)을 제어하는지
19.if (Input.GetKey(KeyCode.W))
{ 변환.Translate(Vector3.forward * moveSpeed ​​​​* Time.deltaTime); } 이 코드 문자열에 대한 설명(객체를 앞으로 이동하려면 w 키를 누르십시오.) 20. Unity는 3가지 유형의 광원을 제공합니다. 즉, 방향성 광원: 방향성 광원, 점 광원: 점 광원, 스포트라이트: 스포트 라이트 오류 21. Rigidbody는 객체를 나타냅니다. 어떤 구성 요소(rigid body) 22. Unity3d의 UI 시스템 그림 구성 요소는 (RawImage, Image)입니다. 23. Unity3D로 가져오기에 가장 적합한 모델 형식은 (FBX)입니다. 24. Material의 중간 질감 형식은 다음과 같습니다. JPG 파일이어야 함 √ 25. 속성 패널에 아버지와 아들의 개념이 반영됨(오류) 26. Transform의 Position 속성은 객체의 3차원 위치 정보를 나타냅니다. √ 27. 객체의 위치 정보를 얻는 방법( gameObject.transform.position) 28. 프리팹을 다양한 시나리오에서 사용할 수 있습니까? 29. Unity3d의 기능은 모델, 사진, 사운드, 동영상 등의 리소스 파일을 전송한 후 가공하여 생성하고, 최종적으로 패키징하여 실행 가능한 프로그램을 생성하는 것입니다.수정 30. 새로운 Unity 프로젝트를 생성할 때, (프로젝트의 볼륨은 개발 과정에서 점점 더 커질 수 있습니다) 때문에 프로젝트가 위치한 디스크 공간에 주의해야 합니다. 31. unity3d에 일반적으로 사용되는 프로그래밍 언어는 C#입니다. 32. BOX Collider 컴포넌트는 무엇입니까? (콜라이더) 33. Unity로 개발할 수 있는 프로젝트에는 (가상 현실 프로젝트, 애니메이션 영화 프로젝트)가 포함됩니다. 34. 콜라이더는 트리거의 캐리어이며, 트리거는 콜라이더의 속성일 뿐입니다. (√) 35. 콜라이더는 코드 √36을 통해 트리거로 변환됩니다 . unity3d에서 시스템과 함께 제공되는 파티클 리소스를 가져오려면 장면으로 직접 드래그할 수 있는 "작은 파란색 사각형" 프리팹 개체를 찾아야 합니다. 이 인스턴스화 프리팹은 무엇입니까? "작은 파란색 사각형"? 37. Unity 엔진에서 Mesh Renderer 구성 요소에 대한 다음 설명 중 올바른 것은 무엇입니까? Mesh Renderer 컴포넌트는 Mesh Filter 컴포넌트로부터 메쉬 정보를 얻어오브젝트의 Transform 컴포넌트에서 정의한 위치에 따라 염색합니다 38. Unity 엔진에서 애니메이터 컨트롤러를 생성하려면 다음 중 어떤 단계를 사용해야 합니까? Project 뷰에서 Create->Animator Controller를 클릭합니다. 39. Project 뷰에서 Inspector 뷰나 Scene 뷰의 게임 개체로 사운드 클립 파일을 드래그하면 다음 중 게임 개체에 자동으로 추가되는 구성 요소는 무엇입니까? 오디오 소스 40. Sphere 게임 개체에 Physics Material을 추가하려면 다음 옵션 중 어떤 구성 요소의 Material 속성을 사용해야 합니까? 구형 충돌기























Unity 프로젝트 코드:

코드 1: 객체의 움직임 제어

 시스템 사용 ;

System.Collections 사용  ;

System.Collections.Generic을 사용합니다  .

UnityEngine 사용  ;

공개  클래스  Component1  : MonoBehaviour

{

    게임오브젝트 obj;

    public  float  floSpeed ​​​​= 10;                //이동 속도 설정

    public  float  floRotate = 100;              //회전 속도 설정

    // 첫 번째 프레임 업데이트 전에 Start가 호출됩니다.

    무효  시작 ()

    {

        //3인칭 시점 따라가기 ( 카메라를 객체에 바인딩 )

        Camera.main.transform.SetParent( this .transform);

        Camera.main.transform.localPosition = new  Vector3(0, 3, -4);

        Camera.main.transform.localEulerAngles = new  Vector3(6, 0, 0);

        #region  마이리전

        //obj = GameObject.Find("구체");

        //GameObject.Instantiate(obj, 변환.위치,변환.회전);

        //Mathf.Clamp();//값을 [] 범위로 제한합니다.

        //UnityEngine.Random.Range(); //난수

        //Resources.Load()// 리소스 로드

        // Application.Quit(); //게임 종료

        // Debug.Log(transform.tag); //태그

        // Debug.Log(transform.position); // 위치

        // Debug.Log(transform.rotation); //회전

        // Debug.Log(transform.eulerAngles); //오일러 각도

        // Debug.Log(transform.localEulerAngles); //로컬 오일러 각도

        // Debug.Log(transform.localPosition); //로컬 위치

        // Debug.Log(transform.localRotation); //로컬 회전

        // Debug.Log(transform.localScale); //로컬 스케일링

        // Debug.Log(transform.parent); //부모 객체

        // Debug.Log(transform.childCount); //자식 개체 수

        // Debug.Log(transform.up); //위

        // Debug.Log(transform.forward); // 앞으로

        // Debug.Log(transform.right); //오른쪽

        //}

        업데이트는 프레임당 한 번 호출됩니다.

        //{ //객체를 이동하는 첫 번째 방법

        //transform.position += new Vector3(0, 0.01f, 0) * Time.deltaTime;

        // //객체 이동의 두 번째 방법

        // 변환.Translate(Vector3.up*floSpeed*Time.deltaTime);

        // //일반적인 변환 방법

        //transform.Rotate(0,floRotate * Time.deltaTime,0); //회전

        // 변환.RotateAround(obj.transform.position, Vector3.up, floRotate * Time.deltaTime); //구 주위를 회전합니다.

        // 변환.LookAt(Camera.main.transform); //항상 정면을 향함

        #endregion

    }

    무효  업데이트 ()

    {

        #region  마이리전

        키보드 입력

        //Input.GetKey(KeyCode.Space); //키를 계속 누르고 있어야 합니다.

        //Input.GetKeyDown(KeyCode.Space); //키를 누르세요.

        //Input.GetKeyUp(KeyCode.Space); //키를 들어올립니다.

      

        //마우스 입력

        //입력.GetMouseButton(0);

        //Input.GetMouseButtonDown(0);

        //입력.GetMouseButtonUp(0);

        //Intput.mousePosition;

        //가상 입력

        //Input.GetAxis("Horizontal"); //FLOAT 값 -1 ~ 1

        //Input.GetAxis("Vertical"); //FLOAT 값 -1 ~ 1

        //Input.GetAxisRaw("Horizontal"); //FLOAT 값 -1 ~ 0 ~ 1

        //Input.GetAxisRaw("Vertical"); //FLOAT 값 -1 ~ 0 ~ 1

        //Input.GetAxis("Mouse X"); //마우스가 수평으로 이동합니다.

        //Input.GetAxis("Mouse Y"); //마우스가 수직으로 이동합니다.

        #endregion

        move(); //객체의 움직임을 제어하는 ​​함수

        view(); //객체 회전을 제어하는 ​​함수

    }

    프라이빗  보이드  룩()

    {

        float  y = Input.GetAxis( "Mouse X" ) * floRotate * Time.deltaTime;

        변환.회전(transform.up, y);

        

    }

    개인  무효  이동()

    {   

        

        float  x =Input.GetAxis( "Horizontal" ) *floSpeed* Time.deltaTime;

        float  z =Input.GetAxis( "Vertical" ) *floSpeed* Time.deltaTime;

        변환.번역(x, 0, z);

    // Input.GetKeyDown(KeyCode.Space); //스페이스 키를 누릅니다.

    // Input.GetKeyUp(KeyCode.Space); //스페이스 키를 들어올립니다.

    // 새로운 NotImplementedException()을 발생시킵니다.

    }

}

코드 2: 물체의 움직임과 강체 충돌 및 광선 반환을 제어합니다.

/*

 Unity 물리 엔진 및 구성 요소

1. 캐릭터 컨트롤러

move();는 중력의 영향을 받지 않습니다.지면을 결정하고 deltaTime을 곱하려면 isGround가 필요합니다.

SimpleMove(); 중력의 영향을 받기 때문에 지면을 판단하거나 deltaTime을 곱할 필요가 없습니다.

2. 충돌기 충돌기

    충돌 트리거 조건: 둘 다 충돌 구성요소를 갖고 있고 적어도 하나는 강체를 가지고 있습니다.

3. 강체

4.레이

 */

 시스템 사용 ;

System.Collections 사용  ;

System.Collections.Generic을 사용합니다  .

UnityEngine 사용  ;

공개  클래스  Component2  : MonoBehaviour

{

    //게임오브젝트 obj;

   

    공개  부동  floSpeed ​​= 30;

    공개  플로트  floRotate = 0;

    공개  GameObject obj;

    //캐릭터 컨트롤러 cc;

    리지드바디 rd;

    // 첫 번째 프레임 업데이트 전에 Start가 호출됩니다.

    무효  시작 ()

    {   

        rd = GetComponent<강체>();

        //cc = GetComponent<CharacterController>();

        //rd.AddForce(new Vector3());

        //rd.velocity = new Vector3(); // 초속

    }

    // 업데이트는 프레임당 한 번씩 호출됩니다.

    무효  업데이트 ()

    {

       // learnRay();

        //float x = Input.GetAxis("Horizontal") * floSpeed;

        //float z = Input.GetAxis("Vertical") * floSpeed ​​;

        //transform.Translate(x, 0, z);

        //캐릭터 이동 방법

        //cc.Move(new Vector3(x, 0, z));

        //cc.isGrounded; //지면에 있는지 확인

        //cc.SimpleMove(new Vector3(x, 0, z));

        //지역 좌표계

        //cc.SimpleMove(transform.forward * z + 변환.right * x);

    }

//광선

    개인  무효  learnRay()

    {

        if (Input.GetMouseButtonDown(0))   //마우스 왼쪽 버튼을 클릭했을 때

        {

            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);   카메라에서 마우스 클릭 위치까지 광선을 생성합니다.

            if (Physics.Raycast(ray, out  RaycastHit hitInfo))

            {   

                //float x = hitInfo.point.x;         //객체를 클릭 위치로 순간이동시킵니다.

                

                //float z = hitInfo.point.z;

                //transform.Translate(x, 0, z);

                Debug.Log(hitInfo.transform.name);   //클릭 위치 이름을 반환합니다.

                Debug.Log(hitInfo.point);     //클릭 위치의 좌표를 반환합니다.

                //hitInfo.point;

                GameObject shell = Instantiate(obj, 변환.위치, 변환.회전);      //객체 복제

                shell.GetComponent<Rigidbody>().velocity = Vector3.Normalize(hitInfo.point - 변환.위치); ;

            }

        }

    }

    private  void  OnTriggerEnter (다른 충돌기)

    {

        Debug.Log( "방금 발생했습니다." );

    }

    private  void  OnTriggerStay (콜라이더 기타)

    {

        Debug.Log(other.transform.name);

    }

    private  void  OnTriggerExit (콜라이더 기타)

    {

        rd.AddForce(transform.up * 500);

        Debug.Log( "충돌이 종료되었습니다" );

    }

   

}

프로젝트 코드 3: 음악 가져오기, 볼륨 조절, 노래 전환 등

 시스템 사용 ;

System.Collections 사용  ;

System.Collections.Generic을 사용합니다  .

UnityEngine 사용  ;

공개  클래스  Component3  : MonoBehaviour

{

    오디오소스 광고

    오디오클립과;

    오디오클립 ac1;

    // 첫 번째 프레임 업데이트 전에 Start가 호출됩니다.

    무효  시작 ()

    {

        Ads = GetComponent<AudioSource>();

        ac = Resources.Load<AudioClip>( "AudioClips/爱재 BC-Jay Chou" ) as  AudioClip;

        ac1 = Resources.Load<AudioClip>( "AudioClips/Click Sound Effect" ) as  AudioClip;

        //ads.clip = ac;

        //ads.Play(); //재생

        //ads.Pause(); //일시중지

        //ads.UnPause();//계속 재생

        //ads.PlayOneShot()//한 번 재생

        //ads.playOnAwake;//깨어날 때 재생

        //ads.volume = 1.0f; //볼륨

        //ads.loop;//루프

        //ads.isPlaying = false;//재생 여부

        //ads.clip;//사운드 클립

    }

    // 업데이트는 프레임당 한 번씩 호출됩니다.

    무효  업데이트 ()

    {

        클릭오디오();

        변경볼륨();

        음악을 재생();

        체인지뮤직();

    }

    개인  무효  clickAudio()

    {

        if  (Input.GetMouseButtonDown(0))

        {

           

            ac1 = Resources.Load<AudioClip>( "AudioClips/Click Sound Effect" ) as  AudioClip;

        }

    }

    private  voidchangeMusic  ()    //노래를 전환하려면 Tab 키를 누르세요.

    {

        if  (Input.GetKey(KeyCode.Tab))

        {

            //ads.clip = acs[j];

            //ads.pa

            ac = Resources.Load<AudioClip>( "AudioClips/爱재 BC-Jay Chou" ) as  AudioClip;

            

        }

    }

    private  void  playMusic()   //음악을 일시 정지하고 재생하려면 B 키를 누르세요.

    {

        if  (Input.GetKey(KeyCode.B))

        {

           if (ads.isPlaying)

            {

                광고.일시중지();

            }

            또 다른

            {

                광고.Play();

            }

        }

    }

    private  voidchangeVolume  ()   //Z 및 X 키를 통해 음악 볼륨을 조정합니다.

    {

        if  (Input.GetKey(KeyCode.Z))

        {

            광고.볼륨--;

        } else  if  (Input.GetKey(KeyCode.X))

        {

            광고.볼륨++;

        }

    }

}

프로젝트 코드 4: 애니메이션 트리거링

System.Collections 사용  ;

System.Collections.Generic을 사용합니다  .

UnityEngine 사용  ;

공개  클래스  Component4  : MonoBehaviour

{

    애니메이터 오전;

    // 첫 번째 프레임 업데이트 전에 Start가 호출됩니다.

    무효  시작 ()

    {

        StartCoroutine(learnCoroutine());

        //StopAllCoroutine();

        //코루틴 중지();

    }

    // 업데이트는 프레임당 한 번씩 호출됩니다.

    무효  업데이트 ()

    {

        if  (Input.GetKey(KeyCode.F))    //F 키를 누르면 물건을 집는 동작을 수행합니다.

        {

            am.SetTrigger( "pickup" );   //트리거 설정

        }

        if  (Input.GetKey(KeyCode.Space))    //점프 동작을 수행하려면 스페이스바를 누르세요.

        {

            am.SetTrigger( "jump-float" );   //트리거 설정

        }

    }

    //통합된 코루틴, Yield return 키워드를 사용하세요.

    IEnumerator learnCoroutine()

    {    동안  ( )

        {

            

            return  new  WaitForSeconds(1) ; 

            항복  반환  null ;

        }

        

    }

}

프로젝트 코드 5: UI 인터페이스

System.Collections 사용  ;

System.Collections.Generic을 사용합니다  .

UnityEngine 사용  ;

TMPro 사용  ;              //새 버전

using  UnityEngine.UI;     //기존 GUI 네임스페이스

 시스템 사용 ;

/*

 UI 시스템 알아보기

 */

공개  클래스  Component5  : MonoBehaviour

{

    //GUI 컴포넌트 객체에 값을 할당하는 첫 번째 방법: 공개+외부 할당

    공개  이미지 이미지;

    //GUI 컴포넌트 객체에 값을 할당하는 두 번째 방법: 컴포넌트를 얻기 위한 스크립트 제어

    RawImage rawImage;

    public  Text t;                      //텍스트 컴포넌트 생성

    공개  버튼 버튼; //버튼 구성요소 생성

    public  InputField inputField;        //입력 상자

    공개  토글 토글;               //라디오 버튼

    public  Slider 슬라이더;                //슬라이더 바

    공개  스크롤바 스크롤바;

    public  Dropdown dropdown;           //드롭다운 상자

    // 첫 번째 프레임 업데이트 전에 Start가 호출됩니다.

    무효  시작 ()

    {

        //이미지이미지

        //image.sprite = 해상도.로드();

        //원본 이미지

        rawImage = GetComponent<RawImage>();

        rawImage.texture = Resources.Load<Texture>( "Assets/wallhaven-d66zvm.png" ) 를 텍스처 로 사용  ;

        t.text = "아아아" ;

        //단추

        //이벤트 모니터링 방법 1: 공개 메소드 + 외부 호출

        //방법 2: AddListener

        버튼.onClick.AddListener(ClickButton);

        //비녀장

        ggle.onValueChanged.AddListener(ClickToggle);

        //

        슬라이더.onValueChanged.AddListener(ClickSlider);

        scrollbar.onValueChanged.AddListener(ClickSlider);

        //드롭 다운 목록

        초기화드롭다운();

        dropdown.onValueChanged.AddListener(ClickDropdown);

    }

    개인  무효  InitDropdown()

    {

        dropdown.options.Clear();

        //목록 항목 생성

        Dropdown.OptionData op1 = 새로운  Dropdown.OptionData();

        op1.text = "아이오니아" ;

        dropdown.options.Add(op1);

        Dropdown.OptionData op2 = 새로운  Dropdown.OptionData();

        op1.text = "데마시아" ;

        dropdown.options.Add(op2);

    }

    무효  ClickButton() {

        if  (inputField.text == "123" )

        {

            Debug.Log( "로그인 성공" );

        }

        또 다른

        {

            Debug.Log( "로그인 실패" );

        }

    }

    void  ClickToggle( bool  isOn) {       //토글 라디오 버튼 확인에 따라 음소거

        

            if  (isOn)

            {

                Debug.Log( "음소거" );

            }

            또 다른

            {

                Debug.Log( "계속 재생" );

            }

        }

    무효  ClickSlider( 부동 소수점  값)

        {

            if  (값<0.3)

            {

                Debug.Log( "" );

            }

        }

    무효  ClickDropdown( int  값)

        {

            스위치  (값)

            {

                사례  0:

                    Debug.Log( "Ionia에 로그인" );

                    부서지다 ;

                사례  1:

                    Debug.Log( "데마시아에 로그인" );

                    부서지다 ;

                        }

        }

프로젝트 코드 6: 그림에 마우스를 올리거나 클릭하면 그림의 색상이 변경됩니다.

/*

 유니티 이벤트 시스템 EvenSystems

 IPointer...핸들러

 나...드래그 핸들러

 */

System.Collections 사용  ;

System.Collections.Generic을 사용합니다  .

UnityEngine.EventSystems 사용  ; //이벤트 시스템 네임스페이스

UnityEngine 사용  ;

UnityEngine.UI 사용  ;

TMPro를 사용하여  ;

공개  클래스  Component6  : MonoBehaviour, IPointerClickHandler, IDragHandler, IPointerEnterHandler, IPointerExitHandler

{

    

    공공  무효  OnDrag(PointerEventData eventData)

    {

        변환.위치 = 입력.마우스위치;

        //transform.position = eventData.position;

        

    }

    공공  무효  OnPointerClick(PointerEventData eventData)

    {

        Debug.Log( "그림을 클릭하세요" );

    }

    공공  무효  OnPointerEnter(PointerEventData eventData)

    {

        GetComponent<Image>().color = Color.green;

    }

    공공  무효  OnPointerExit(PointerEventData eventData)

    {

        GetComponent<Image>().color = Color.white;

    }

}

프로젝트 코드 7: 슬라이더를 통해 볼륨을 변경하고 라디오 버튼으로 음소거 제어

System.Collections 사용  ;

System.Collections.Generic을 사용합니다  .

UnityEngine 사용  ;

TMPro 사용  ;              //새 버전

using  UnityEngine.UI;     //기존 GUI 네임스페이스

 시스템 사용 ;

공개  클래스  Component7  : MonoBehaviour

{

    공개  버튼 버튼;    //컴포넌트 생성

    공개  토글 토글;

    공개  슬라이더 슬라이더;

    오디오소스 광고

    // 첫 번째 프레임 업데이트 전에 Start가 호출됩니다.

    무효  시작 ()

    {

        Ads = GetComponent<AudioSource>();

        Slider.onValueChanged.AddListener(ChangeVolume);   //응답 설정

        ggle.onValueChanged.AddListener(PlayMusic);

        

    }

   

    private  void  PlayMusic( bool  arg0)    //라디오 버튼 박스 체크 여부를 확인하여 작업을 실행합니다.

    {

        if  (arg0)

        {  

            광고.일시중지();

        }

        또 다른

        {

            광고.Play();

        }

    }

    private  void  ChangeVolume( float  arg0)     //슬라이더 바의 값을 통해 볼륨을 변경합니다.

    {

        광고.볼륨 = arg0;

    }

}

프로젝트 코드 8: 데이터베이스 연결 구현

System.Collections 사용  ;

System.Collections.Generic을 사용합니다  .

UnityEngine 사용  ;

MySql.Data.MySqlClient를 사용  ;      //mysql 커넥터 네임스페이스

 시스템 사용 ;

공개  클래스  Component8  : MonoBehaviour

{    //mysql 커넥터

    MySqlConnection sqlConnection;

    string  strConn = "서버=localhost;port=3306;사용자 이름=루트;password=루트;데이터베이스=2113042122wxh;charset=utf8;" ;

    // 첫 번째 프레임 업데이트 전에 Start가 호출됩니다.

    무효  시작 ()

    {

        //데이터베이스 열기

        노력하다

        {

            sqlConnection = new  MySqlConnection(strConn);

            sqlConnection.Open();

            Debug.Log(sqlConnection.State);

            //삽입 증가

            삽입데이터();

            //삭제 삭제

            삭제();

            //업데이트 변경

            내부업데이트();

            //SelectData 확인

            내부선택데이터();

        }

        잡기  (System.Exception)

        {

            던지다 ;

        }

        마지막으로

        {

            if  (sqlConnection.State .ToString() == "열기" ) {

                sqlConnection.Close();

                Debug.Log(sqlConnection.State);

            }

            

        }

        

    }

    개인  무효  interSelectData()

    {

        //첫 번째 단계는 SQL 문을 작성하는 것입니다.

        string  strSql = "이름 = '';인 학생에게서 * 선택" ;

        //두 번째 단계에서는 MySQLcommand 객체를 생성합니다.

         (MySqlCommand mySqlCommand = new  MySqlCommand(strSql, sqlConnection)) 사용

        {

            //세 번째 단계에서는 ExecuteReader()를 실행합니다.

             (MySqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader()) 사용 ;

            //네 번째 단계에서는 반환된 MysqlDataReader 객체에서 데이터를 읽습니다.

        }

    }

    개인용  int  interUpdate()

    {

        //첫 번째 단계는 SQL 문을 작성하는 것입니다.

        string  strSql = "학생 세트 이름 업데이트='Zhang Mazi' 여기서 이름 = 'Huang Silang';" ;

        //두 번째 단계에서는 MySQLcommand 객체를 생성합니다.

         (MySqlCommand mySqlCommand = new  MySqlCommand(strSql, sqlConnection)) 사용

        {

            //세 번째 단계에서는 ExecuteNonQuery() 메서드를 실행합니다.

             mySqlCommand.ExecuteNonQuery()를 반환합니다 .

        }

    }

    개인  int  insterdelete()

    {

        //첫 번째 단계는 SQL 문을 작성하는 것입니다.

        string  strSql = "이름='张麻子'인 학생에게서 삭제;" ;

        //두 번째 단계에서는 MySQLcommand 객체를 생성합니다.

         (MySqlCommand mySqlCommand = new  MySqlCommand(strSql, sqlConnection)) 사용

        {

            //세 번째 단계에서는 ExecuteNonQuery() 메서드를 실행합니다.

             mySqlCommand.ExecuteNonQuery()를 반환합니다 .

        }

    }

    개인용  int  interData()

    {

        //첫 번째 단계는 SQL 문을 작성하는 것입니다.

        string  strSql = "학생(Sname,Sage) 값('张麻子',25)에 삽입;" ;

        //두 번째 단계에서는 MySQLcommand 객체를 생성합니다.

         (MySqlCommand mySqlCommand = new  MySqlCommand(strSql, sqlConnection)) 사용

        {

            //세 번째 단계에서는 ExecuteNonQuery() 메서드를 실행합니다.

             mySqlCommand.ExecuteNonQuery()를 반환합니다 .

        }

        

       

    }

    // 업데이트는 프레임당 한 번씩 호출됩니다.

프로젝트 코드 9: 로그인 등록 기능 구현

/*

 로그인 등록 기능 구현

로그인: 입력 상자에서 문자열 가져오기--->데이터베이스 연결 및 열기--->사용자 이름과 비밀번호 찾기

Y = --->비밀번호 비교-->Y=-->데이터베이스 닫기--->로그인 성공

Y = --->비밀번호 비교-->N=-->데이터베이스 닫기--->로그인 실패

N = --->데이터베이스 닫기 --->로그인 실패

등록: 입력 상자에서 문자열 가져오기--->데이터베이스 연결 및 열기--->사용자 이름과 비밀번호 찾기

Y =>데이터베이스 닫기--->등록 실패

N => 사용자 이름과 비밀번호 추가 ---> 데이터베이스 닫기 ---> 등록 성공

분해:

1. 데이터베이스 연결 및 열기

2. 사용자 이름과 비밀번호 찾기

3. 데이터베이스를 닫습니다.

4. 비밀번호 비교

5.사용자 이름과 비밀번호를 추가하세요

인터페이스: 로그인 1234 등록 1235

개체: GUI 개체 입력 상자*2 버튼*2, 텍스트

     데이터베이스:MySQLConnection,..Command...Reader

     끈

*/

System.Collections 사용  ;

System.Collections.Generic을 사용합니다  .

UnityEngine 사용  ;

UnityEngine.UI 사용  ;

 MySql.Data.MySqlClient 사용 ;

 시스템 사용 ;

 UnityEngine.SceneManagement 사용 ;

공개  클래스  Component9  : MonoBehaviour

{

    공개  InputField inputField1;

    공개  InputField inputField2;

    공개  버튼 버튼1;

    공개  버튼 버튼2;

    공개  텍스트 팁;

    MySqlConnection sqlConnection;

    string  strConn = "서버=localhost;port=3306;사용자 이름=루트;password=루트;데이터베이스=2113042122wxh;charset=utf8;" ;

    문자열  사용자 이름;

    문자열  비밀번호;

    문자열  사용자 이름DB;

    문자열  비밀번호DB;

    // 첫 번째 프레임 업데이트 전에 Start가 호출됩니다.

    무효  시작 ()

    {

        버튼1.onClick.AddListener(로그인);

    }

    공개  무효  로그인()

    {

        사용자 이름 = inputField1.text;

        비밀번호 = inputField2.text;

        ConnectDB();

        SelectDB(사용자 이름);

        닫기DB();

        CompareDB(비밀번호);

    }

    private  void  CompareDB( string  비밀번호)    //사용자 이름과 비밀번호를 확인하는 비교 함수

    {

        if (사용자 이름 == 사용자 이름DB&&비밀번호 == 비밀번호DB)

        {

            SceneManager.LoadScene(1);

        }

        또 다른

        {

            Tip.text = "로그인 실패" ;

        }

    }

    private  void  CloseDB()      //데이터베이스 닫기

    {

        if  (sqlConnection.State.ToString() == "열기" )

        {

            sqlConnection.Close();

            Debug.Log(sqlConnection.State);

        }

    }

    private  Boolean SelectDB(String n)     //데이터베이스 쿼리

    {

        string  strSql = "사용자 이름 = '"  + n + "';" 인 tb_user에서 *를 선택하세요." ;

         (MySqlCommand mySqlCommand = new  MySqlCommand(strSql, sqlConnection)) 사용

        {

            //ExecuteNonQuery() 메소드 실행

             (MySqlDataReader 리더 = mySqlCommand.ExecuteReader()) 사용

            {

                동안  (reader.Read())

                {

                    사용자 이름DB = reader.GetString(1);

                    비밀번호DB = reader.GetString(2);

                     true를 반환합니다 .

                }

            }

        }

         거짓을 반환 ;

    }

    공공  무효  ConnectDB()           

    {

        노력하다

        {

            sqlConnection = new  MySqlConnection(strConn);

            sqlConnection.Open();

            Debug.Log(sqlConnection.State);

        }

        잡기  (예외)

        {

            던지다 ;

        }

    }

    public  void  Register()    //등록 함수

    {

        사용자 이름 = inputField1.text;

        비밀번호 = inputField2.text;

        //열린 데이터베이스에 연결

        ConnectDB();

        //사용자 이름/비밀번호 검색

        if  (SelectDB(사용자 이름) == true )

        {

            Tip.text = "사용자가 존재합니다" ;

        }

        또 다른

        {

            if  (AddDB(사용자 이름, 비밀번호) == 1)

            {

                Tip.text = "성공적으로 추가되었습니다" ;

            }

            또 다른

            {

                Tip.text = "추가 실패" ;

            }

        }

        닫기DB();

    }

    개인용  int  AddDB( 문자열  n, 문자열  p)   

    {

        //SQL문 작성

        string  strSql = "tb_user(username,password) 값에 삽입 ('"  + n + "','"  + p + "')" ;

        //MySQL 객체 생성

         (MySqlCommand mySqlCommand = new  MySqlCommand(strSql, sqlConnection)) 사용

        {

            //ExecuteNonQuery() 메소드 실행

            mySqlCommand.ExecuteNonQuery();

        }

        1을 반환합니다  .

    }

}

추천

출처blog.csdn.net/CYwxh0125/article/details/135180891