Unity学习笔记——博客中有游戏练习案例

		 			First   Acquaintanced   Unity  

1.导入资源到unity中

2.x轴:左右 y轴:上下 z轴:前后

3.ctrl+d复制

4.顶点吸附:选择物体+v,定位定点,再拖拽目标物体到某个定点上(先松V键)。

5.创建立方体:
(1)创建空物体:GameObject——Create Empty
(2)创建网格过滤器:Component——Mesh——Mesh Filter设置Mesh属性
(3)创建网格渲染器:Component——Mesh——MeshRendener
(4)设置材质Material属性

6.可利用unity创建物体出现的位置进行物体融合。

7.可将多个物体打总,后操作父物体进行总体操作。

  1. Opaque不透明,默认选
    Transparent 透明,用于半透明和全透明物体,如:玻璃
    Cutput镂空,用于完全透明或完全不透明的物体,如:栅栏
    Fade镂空,用于需要淡入淡出的物体

9.Unity学习笔记——博客中有游戏练习案例_第1张图片

10.Unity学习笔记——博客中有游戏练习案例_第2张图片

11.Unity学习笔记——博客中有游戏练习案例_第3张图片

12.物理着色器

13.Unity学习笔记——博客中有游戏练习案例_第4张图片

14.Unity学习笔记——博客中有游戏练习案例_第5张图片

15.Viewport Rect——设置摄像机的大小属性,从而设计小地图、后视镜类的视图
前提条件:depth要大于main camera,同时若两者相同则谁的最后修改谁在上面。
2D地图效果更好
Unity学习笔记——博客中有游戏练习案例_第6张图片

16.ctrl+shift+F将选择物体移动到scene目前所在视角。
17.Unity学习笔记——博客中有游戏练习案例_第7张图片

在视觉上是否显现可控制是否勾选layer。
Unity学习笔记——博客中有游戏练习案例_第8张图片

18.将地图周围的空白部分不渲染,只留下地图。
Unity学习笔记——博客中有游戏练习案例_第9张图片Unity学习笔记——博客中有游戏练习案例_第10张图片
19.

Unity学习笔记——博客中有游戏练习案例_第11张图片
Unity学习笔记——博客中有游戏练习案例_第12张图片

Unity学习笔记——博客中有游戏练习案例_第13张图片
Unity学习笔记——博客中有游戏练习案例_第14张图片
Unity学习笔记——博客中有游戏练习案例_第15张图片
Unity学习笔记——博客中有游戏练习案例_第16张图片20.Unity学习笔记——博客中有游戏练习案例_第17张图片
Unity学习笔记——博客中有游戏练习案例_第18张图片

C#语言基础:

1.C#
2.NET dotnet新一代多语言开发平台。
3.Mono支持在其他操作系统下开发.net程序的框架。
4.unity借助Mono实现跨平台。核心是.net framework框架。

代码语法:

console.WriteLine(); //写一行
console.ReadLine(); //读一行
console是类——工具
console.Title=“”; //设置控制台的名称
namespace *** //定义命名空间【类的地址】
变量
声明:在内存开辟空间
赋值:在该空间中储存数据
string.Format(“枪的名称为:{0},容量为:{1}.”,gunName,ammoCapacity);
标准数字字符串格式化:格式字符
在这里插入图片描述
在这里插入图片描述

Console.WriteLine(“{0:d2}”,5); //05 不足2位用0填充

Console.WriteLine(“{0:f1}”,1.26); //根据指定精度显示 1.3

Console.WriteLine(“{0:p0}”,0.1) // 以百分数显示 10%
Console.WriteLine(“我爱"Unity!”"); //我爱“unity”
char c=‘\0’ //空字符
\r\n //换行符
\t 制表符

语言在电脑中的编译过程:源代码(.cs的文本文件)——CLS编译——通用中间语言(exe dll)——机器码 0-1

#region —— 折叠代码
将一个字符数字转化为数字:

char c=‘3’; string s1=c.ToString(); int n1=int.Parse(s1);

隐式类型转换:自动转换:由小范围到大范围

byte b3=100; int i3=b3;

**显示类型转换:强制转换:**由大范围到小范围

int i4=100; byte b4=(byte)i4;

转换类型与数值类型所含的字节数有关——byte(1个字节) int(4个字节)
选择、分支、循环语句

产生1-100内的随机数

Random random=new Random(); int number=random.Next(1,101);

方法

与其他语言类似
对应API:
string str.Insert(num,“”); 在num索引处添加“ ”字符
int str.IndexOf(’ '); 返回值为‘ ’ 的索引
string str.Remove()
string str.Replace()
bool str.StartWith()
bool str.Contains()
方法的重载
递归

数组:定义方法与java类似

var定义变量,数据类型由数据自身格式决定:与js语法类似
foreach遍历数组 :for(var i in array)
数组API:
Array.IndexOf(arr,4):返回对应索引值
Unity学习笔记——博客中有游戏练习案例_第19张图片

C#语言知识:Unity学习笔记——博客中有游戏练习案例_第20张图片

Unity脚本:

Unity学习笔记——博客中有游戏练习案例_第21张图片
脚本:附加在物体上用于定义游戏对象行为的指令代码。
unity支持三种高级编程语言:C#、JavaScript、Boo Script
语法结构:
Unity学习笔记——博客中有游戏练习案例_第22张图片
1.脚本语言中的Start()与Update()方法不用就删,因为这两个方法系统自动0.2秒调用一次,参生一个栈针。
Unity学习笔记——博客中有游戏练习案例_第23张图片
2.改变默认脚本初始化代码
在这里插入图片描述
Unity学习笔记——博客中有游戏练习案例_第24张图片
3.设置外部编辑器
Unity学习笔记——博客中有游戏练习案例_第25张图片

脚本生命周期

Unity学习笔记——博客中有游戏练习案例_第26张图片
1.Unity学习笔记——博客中有游戏练习案例_第27张图片
2…不能在子线程中访问主线程变量,不要在脚本中写构造函数
3.Unity是单线程执行,先做的放Awake,后做的放start
Unity学习笔记——博客中有游戏练习案例_第28张图片
Unity学习笔记——博客中有游戏练习案例_第29张图片
4.按帧移动、按时移动的方法
Unity学习笔记——博客中有游戏练习案例_第30张图片

Unity学习笔记——博客中有游戏练习案例_第31张图片
Unity学习笔记——博客中有游戏练习案例_第32张图片
5.输入事件:Unity学习笔记——博客中有游戏练习案例_第33张图片

Unity学习笔记——博客中有游戏练习案例_第34张图片
Unity学习笔记——博客中有游戏练习案例_第35张图片
6.控制台需设置的功能:
在这里插入图片描述
7.调试:Unity学习笔记——博客中有游戏练习案例_第36张图片
120集Unity学习笔记——博客中有游戏练习案例_第37张图片
物体向z轴移动10,this引用了transform调动了position属性。
Unity学习笔记——博客中有游戏练习案例_第38张图片
改变物体颜色

  this.GetComponent<MeshRenderer>().material.color=Color.red;

121集:Component类提供查找(在当前物体、后代、先辈)组件的功能
Unity学习笔记——博客中有游戏练习案例_第39张图片

**122集:**位置旋转

Unity学习笔记——博客中有游戏练习案例_第40张图片Unity学习笔记——博客中有游戏练习案例_第41张图片
123集:
可通过unity圣典API查询对应方法

private void OnGUI()
   {
       if(GUILayout.Button("按钮"))
       {
         this.transform.position=new Vector3(0,0,20);
         this.GetComponent<MeshRenderer>().material.color=Color.red;
       }
       if(GUILayout.Button("pos/scale"))
       {
           //向自身坐标系 z轴移动、旋转1米
           //this。transfrom.Translate(0,0,1);
           this.transform.Rotate(0,0,1);
           //向世界坐标系z轴移动\旋转1米
           this.transform.Translate(0,0,1,Space.World);
            this.transform.Rotate(0,0,1,Space.World);
            //围绕旋转
           this.transform.RotateAround(Vector3.zero,Vector3.up,1);
       }
   }

Unity学习笔记——博客中有游戏练习案例_第42张图片
124集::
Transform类提供了查找(父、根、子)变换组件、改变位置、角度、大小功能
1.寻找子物体的组件
根据名称获取子物体:

Transform childTF=this.transform.Find("子物体的名称") 求多层子物体的格式:子物体的名称/子子物体的名称

根据索引获取子物体:

int count=this.transform.childCount;
for(int i=0;i<count;i++)
{
Transform childTF=this.transform.GetChild(i);
}

练习用递归找不知道层级的子物体:

public class TransformHelper
{/// 
/// 在层级未知的情况下查找子物体
/// 
/// 父物体变换组件
/// 子物体名称
    public static Transform GetChild(Transform parentTF,string childName)
    {
        //在子物体中查找
        Transform childTF = parentTF.Find(childName);
        if (childTF == null) return childTF;
        //将问题交给子物体
        for (int i = 0; i < parentTF.childCount; i++)
        {
            childTF = GetChild(parentTF.GetChild(i), childName);
            if (childTF != null) return childTF;
        }
        return null;
 
    }
}

125集:gameObject类
例:添加光源:

 if(GUILayout.Button("添加光源"))
       {
         GameObject lightGO=new GameObject();
         Light light=lightGO.AddComponent<Light>();
         light.color=Color.red;
         light.type=LightType.Point;
       }

Object类:
练习:查找血量最低的敌人:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class script : MonoBehaviour
{
    private void OnGUI()
    {
        if (GUILayout.Button("查找血量最低的敌人"))
        {
            //1.通过标签获取敌人
            //GameObject[] allEnemyGO = GameObject.FindGameObjectsWithTag("Enemy");
            //Enemy[] allEnemy = new Enemy[allEnemyGO.Length];
            //for (int i = 0; i < allEnemyGO.Length; i++)
            //{
            //    allEnemy[i] = allEnemyGO[i].GetComponent();
            //}
 
            //2.通过类型获取敌人
            Enemy[] allEnemy = FindObjectsOfType<Enemy>();
 
            Enemy min = FindEnemyByMinHP(allEnemy);
            min.GetComponent<MeshRenderer>().material.color = Color.red;
        }
        if (GUILayout.Button("查找距离最近的敌人"))
        {
            Enemy[] allEnemy = FindObjectsOfType<Enemy>();
            Enemy minDistance = FindeEnemyByMinDistance(allEnemy, transform);
            minDistance.GetComponent<MeshRenderer>().material.color = Color.red;
        }
    }
 
    public Enemy FindEnemyByMinHP(Enemy[] enemys)
    {
        Enemy min = enemys[0];
        for (int i = 1; i < enemys.Length; i++)
        {
            if (min.HP > enemys[i].HP)
                min = enemys[i];
        }
        return min;
    }
 
    //练习2:获取最近的敌人
    //float distance = Vector3.Distance(物体1.位置,物体2.位置);
    public Enemy FindeEnemyByMinDistance(Enemy[] enemys, Transform targetTF)
    {
        Enemy min = enemys[0];
        float minDistance = Vector3.Distance(min.transform.position, targetTF.position);
 
        for (int i = 1; i < enemys.Length; i++)
        {
            float distance = Vector3.Distance(enemys[i].transform.position, targetTF.position);
            if (minDistance > distance)
            {
                min = enemys[i];
                minDistance = distance;
            }
        }
 
        return min;
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Enemy : MonoBehaviour
{
    public float HP;
 
}

126集:复习Component、Transfrom、gameObject、Object类
127集:

你可能感兴趣的:(unity,unity)