7.5
1,单例下的private变量 无法获取
2,setactive为false时 脚本也会失效
7.6
1,二维数组:int[,]=new int[3,4]{{*}}创建一个3行4列的二维数组
7.7
1,Animator动画机 里的 Parameters参数,要用 Get+类型 和 Set+类型 来获取和设置
Setfloat("参数名",set的数值) SetBool("参数名",判断的条件) 符合就Set为True
2,FixedUpdate 里要用 Time.fixedTime fixedDeltaTime是固定时间 和 FixedUpdate 的时间有区别
3,Quaternion rotation = Quaternion.LookRotation(targetDir, Vector3.up);//需要旋转的方向,旋转围绕的轴
transform.rotation = Quaternion.Lerp(transform.rotation, rotation, Time.fixedTime * rotationSpeed);
四元数控制旋转??是一个有大小有方向的数
4,光线穿墙的原因:
1)查看一下相关物体的材质,记得勾选“投射阴影” Cast Shadow。
2)检查物体的材质shader,看是否支持灯光,有些材质是不支持灯光的,就不会计算灯光。
3)查看你灯光的阴影模式shadow type,如果是 no shadow就没有阴影。应该把它设置为soft shadow软边阴影 或硬边阴影。
4)也有可能是你灯光的遮罩设置cull mask的问题, 看有没有选中你需要投射阴影物体所在的层layer。如果是everything, 就是所有层的物体都会照亮。
7.8
1,AudioSource.PlayClipAtPoint(audioClip,audioPosition.position) 创建音效
2,Vector3 local=Transform.localPosition
Vector3 world=Transform.position
worldPos=transformA.TransformPoint(local) local相对于transformA的位置 transformA在原点得到的则为世界坐标
7.10
1,Window=>Lighting=>Setting=>SkyBox 设置天空盒子
2,Edit=>ProjectSetting=>Quality=>PixelLightCount 设置可以看到的Light个数
3,Physics.Raycast(V3起始点, V3射线方向 , out hitInfo) 放出射线Ray,碰撞到物体返回为一个bool值,碰撞信息会存储到hitInfo中。
ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用out 关键字。
4,做Navigtion的时候场景要设为static
5,一个简单的寻路
NavMeshPath path = new NavMeshPath();
if (enemyNav.CalculatePath(V3目标, path)) //计算路径,数据在path里
{
Vector3[] wayPos = new Vector3[path.corners.Length + 2]; //corners是一个数组,里面是路径上点的V3坐标
wayPos[0] = transform.position;
wayPos[wayPos.Length-1] = temp;
for (int i = 0; i < path.corners.Length; i++)
{
wayPos[i + 1] = path.corners[i];
}
float distance = 0;
for (int i = 1; i < wayPos.Length; i++)
{
distance += (wayPos[i] - wayPos[i - 1]).magnitude;//表示向量的长度,
}
7.13
1,Navigation AutoBake 的作用是让物体到达目标位置立刻停下
7.17
1,
+, -, !, ~, ++, -- | 这些一元运算符只有一个操作数,且可以被重载。 |
+, -, *, /, % | 这些二元运算符带有两个操作数,且可以被重载。 |
==, !=, <, >, <=, >= | 这些比较运算符可以被重载。 |
&&, || | 这些条件逻辑运算符不能被直接重载。 |
+=, -=, *=, /=, %= | 这些赋值运算符不能被重载。 |
=, ., ?:, ->, new, is, sizeof, typeof | 这些运算符不能被重载。 |
2,接口注意的几点:
- 接口方法不能用public abstract等修饰。接口内不能有字段变量,构造函数。
- 接口内可以定义属性(有get和set的方法)。如string color { get ; set ; }这种。
- 实现接口时,必须和接口的格式一致。
- 必须实现接口的所有方法。
3,覆盖“+”操作符
public static Student operator +(Student s1, Student s2) { return new Student(s1.age + s2.age, s1.name + " And " + s2.name); }