vs快捷键
布尔运算符
gotO
enum
unity 的scene窗口渲染模式
shading mode 网格Mesh显示模式
Editor 自定义editor工具
旋转 Quaternion 欧拉角 四元数
Canvas 的Render Mode:
Canvas Scaler的UI Scale Model:
RawImage 与Image
设值view的层级 把imge拉倒最上层
属性的各种用法
常用数学方法
触摸touch
素材格式
组件的操作
button
修改图片sprite
打开一个网页
Toggle 开关
滑动条 slider
mask 遮盖
Text截取
自己创建dll类库
pc平台,调用c/c++代码
安卓平台调用c/c++
unity的特殊文件夹:
编译器扩展方法
Input使用
Texture 组件
屏幕特效实现原理
导入unity 内置的屏幕特效
数组转List
List转数组
------------
buildSetting 中的第一个场景,就是启动场景
float 32为浮点数
fixed 定点浮点数,计算更准
half 减半的浮点数
----------------------------
------------------------------------------------
不支持围绕一个物体旋转,每次旋转都是围绕视野中心旋转,如果需要绕物体旋转,先选中物体,然后按F建,会让物体放入视野中心点
添加物体默认会放入视野的中心点
DX中默认顺时针为正向 OPenGL 默认逆时针是正向
EventSystem.current.IsPointerOverGameObject();鼠标点击在UI上返回true
鼠标原点 在左下角,x向右为正,y向上为正
UGUI坐标: 原点在控件的不定位置,有pivot锚点决定,x向右为正,y向上为正
屏幕坐标和UGUI坐标的转换
RectTransformUtility.ScreenPointToLOcalPointInRectangle
拖拽的实现
协议 IDrawHandle 实现方法 OnDraw(PointerEventData eventData)
eventdata.position 是鼠标坐标(Input.MosePosition)
RectTransformUtility.ScreenPointToLOcalPointInRectangle屏幕上的鼠标坐标转化为ui的本地坐标
返回值为bool表示坐标是否在UI上
recttransform.anchoredPosition 是设置UI的xY值
拖拽抖动,是因为渲染的速度与拖拽不一致导致,解决办法,拖拽的坐标转化放到canvas上。因为画布大小不会变
如果要每次鼠标按下的位置都是物体的中心点,就需要把位置跟第一次按下的位置进行相减,这样才不会出现,拖拽时猛地跑到其他地方的现象
地形 Terrain:用图来表示地点的高度,动态的根据需要生成地表
粒子系统Particle System
LOD :Level of detial 远处的物体使用小的少的像素来渲染
实现技术:不同距离放置不同的物体
2D Sprite(2d精灵图片)
Occlusion Culling遮挡剔除 基于camera的视椎体(Clipping Planes)而定,
2d游戏 camera 必须设置为orthographic正交相机
------------------------------------------------
Resharper 代码补全插件
Home 定位到本行代码的最前方
end 位到本行代码的最后方
PageUP 定位到本页代码的最上方
pageDown 定位到本页代码的最下方
shift 位置1 shift 位置2 选中位置1 到位置2 的代码
Delete :删除后面的字符
BackSoace 删除前面的字符
Insert 插入模式 与覆盖模式
---------------
布尔运算符 ! & ^ | &&
gotO 代码标签 任何之后都可以直接跳转到标签处
------------------------------------------------
enum testType {
kk,// 默认取值从0开始
ff,
gg
// 接收用户输入的一行文本
string str= Console.ReadLine();
// 类型转化
int v = Convert.ToInt32(str);
//打印
Console.WriteLine(“ {0} {1}”,str,v);
//程序暂停
Console.ReadKey();
//求平方根
Math.Sqrt(i);
//随机数
Random random = new Random;
int a = randoem.next(1,8);// 包前不包后
4.unity 的scene窗口渲染模式:
Render path 用颜色代码渲染的路径 绿色代表颜值光照, 红色正向渲染 红色顶点光照
overDraw:透明物体简影来渲染物体
Mipmaps:使用颜色代码显示理想的纹理尺寸。红色 纹理大于所需尺寸 蓝色;表示纹理可以再大一些 与分辨率等有关,只能做参考使用
shading mode 网格Mesh显示模式:
shaded着色模式 wirefirame相框模式,仅显示网格 shaded wireframe
-----------------------------------
6. Editor 自定义editor工具
GUID:表示一个资源的唯一标识符,可以通过guid来查找存在自然文件
Selection:unity中用于操作和管理编辑器中的选择对象,
selection.assetGUIDS: 获取当前选择的资源的GUID数组
AssetDataBase.GUIDToAssetPath:通过guid获取资源文件夹路径
DirectoryInfo(resPath)根据资源文件路径获取文件夹信息
------------------
旋转 Quaternion 欧拉角 四元数
欧拉角: 0 ~360 在gameobject的详情版面上就是欧拉角 使用vector3表示
四元数:比欧拉角精确
创建一个欧拉角
Vector3 rotate= new Vector3(0,30,0) 表示只在y旋转30度
创建四元数 Quaternion
Queternion quaternion = Queternio.identity ;//无旋转的四元素
queternion = Queternion.Euler(rotate);//通过欧拉角创建四元数
// 看向一个物体。物体自然会发生旋转
queternion = Queternion.lookRotation(new Vector3(0,0,0));
四元数转化为欧拉角
rotate= queternion.eulerAngles;
Quaternion:用于3D旋转表示的函数,通过四元数表示,表示了3D空间的旋转角度和方法,也可以解决万向锁的问题
----------------------------------------------------------------------------
Canvas 的Render Mode:
1 screen Space -overlay:UI在所有场景gameobject的最前面 此时sort order决定了多个canvas的顺序,sort order值大的在前
2 screen space-camera: 指定一个canmera。可以设置距离摄像机的距离,场景的gameobject可以跑到canvas之前
Canvas Scaler的UI Scale Model:
1.constant piexl size 无论屏幕如何变化.UI元素不会变化
2. Scale With Screen 根据制定的分辨率的,跟屏幕的大小进行等比例缩放
设值view的层级 把imge拉倒最上层
RectTransform rft = image.rectTransform;
rft.setAsLastSibling();//把imge拉倒最上层
------------------------------------------------------------------------------
属性的各种用法
1、给属性添加标签
[Header("模型")]
public int name;
在inspector面板上就会在属性name前多一行模型,就想给属性添加了注释的感觉
2.给属性添加提示信息
[Tooltip("名字")]
public string name;
在Inspector面板上name属性长时间鼠标停留会出现提示问题名字
3.添加空行
[Space]
4.规定返回range
[Range(0,100)]
public float value;
Inspector面板上会在value上一行出现一个1.100的进度条,可以直接给value赋值
-----------
常用数学方法
Mathf.Pow(a,2); a的2次方
Mathf.Sqrt(b); b 被开平方
14.mathf.Round mathf.cLamp mathf.Lerp
mathf.Round 四舍五入
mathf.Lerp 插值
mathf.Clamp 把值限制都某个范围之类,简称限值
-----------
5.
6.触摸touch
Input.touchCount 获取触摸的手指数量
Input.GetTouch(0)获取第一个手指的触摸信息
Input.GetTouch(0).phase获取第一个手指的触摸阶段。分为Began 开始, Moved 移动 Ended 结束 Canceled取消
-----------------------------------------------------------------------------------
素材格式----------------
常用音频格式:MP3 wav ogg等
常用视频格式 MP4 mov wmv等
常用图片格式 jpg png bmp tif tga psd等
字体格式 otf ttf
素材管理:
一般按游戏模块来进行存放,在模块文件夹中按资源类型存放
---------------------------
音频主要用于背景音乐 角色配音 特效音
视频主要用于新手教程 技能介绍
音频播放: Audio Source
主要参数: AUdioClip播放的音频
play on awake是否自动播放
loop是否循环播放
spatial Blend 接近gameobject则声音大,远离则声音小。调整这个参数
摄像机等添加Audio listen 音频监听器
---------------------
视频 Video player
-----------------------
组件的操作
继承与MonoBehaviour之后的脚步可作为组件挂载到物体上
脚本添加组件 gameobject.AddComponent<组件类型>()
脚本查找组件: (查找多个同类型组件是类似的api 如gameobject.GetComponents等,返回一个组件数组)
1.在gameobject自身上查找 gameobject.GetComponent<组件类型>()
2.在gameobject自身及子类上查找gameobject.GetComponentInChildren<组件类型>(),先在自身查找
3.在gameobject自身及父类上查找gameobject.GetComponentInParent<组件类型>(),先在自身查找
脚本查找多个同类型组件
脚本激活或者关闭组件 设置组件的enabled属性,true激活, false关闭
删除组件 Destory(组件对象)
------------------------------------------------------
button:
button组件Transition 可以选择Sprite Swap 在不同的点击状态时设置不同的图片
Button 添加事件 button.onClick.AddListenner(functionName) 注意这种方法要求无参数无返回
有参数的方法通过委托delegate进行添加
button.onClick.AddListenner(delegate{b(index);});
void b(int index){}
--------------------
修改图片sprite
public sprite testBg;
getComponent<Imgee>.sprite = testBg;
------------------
打开一个网页
Application.OpenURL("https://www.baidu.com");
-------------------------
Toggle 开关
isOn == true 显示的是CheckMark的图片。 否则选择BackGround的图片
开关组就是给toggle设置一个group,这个group是任意一个有Toggle Group 组件的空物体
设置了group的toggle选中其中一个isOn == true ,其他的isOn就会==false
-----------------------
滑动条 slider
获取值.value 手动添加事件.onValueChange.additive(someFunction);
----------------
-------------------------
mask 遮盖 父物体添加mask组件则子物体超出父物体的部分就不会显示
Sprite图片 填充效果 一张底图Image 一张子Image、
子Image设置Sprite图片,再选择Image Type 为filled Full Method 选择自己需要的,比如Vertical。
然后修改FillAmount的值就可以填充图片,达到填充的效果
-----------------------
Text截取
属性Horizontal OverFlow设置为overflow超出显示范围的不会别截取
属性Vertical OverFlow设置为overflow超出显示范围的不会别截取
-------------------------------
自己创建dll类库
1.visual studio 文件--》 新建--》 项目---》 类库.Net Framework
2. 视图 ---》 解决方案管理器---》 引用---》添加引用 -》 浏览(选择到unity安装目录下--》 Editor--》 Data --》Managed) 选择需要的已有dll
3. 在项目中编写自己的方法,记住用public 修饰
4.生成解决方案: 解决方案管理器窗口,右键“生成解决方案”
生成的dll文件路径:项目文件夹下--》 obj--》Debug ---》 项目名.DoneDestoryOnLoad(oldObj);
使用自己创建的dll
1.将生成的dll 直接拖入需要的项目文件夹
2.using dll的项目名
3.new一个dll中的类,然后直接调用方法即可
-------------------------------------------------------
--------------------------
pc平台,调用c/c++代码
unity的Plugins 下建立 x86 x86_64 放pc的代码,要用c来写。在unity的cs中使用时用DllImport来声明
安卓平台调用c/c++
用c写放入 Plugins /Android/libs 建立文件夹x86 armeabi armeabi-v7a 在unity的cs中使用时用DllImport来声明
unity的特殊文件夹:
Hidden Foildrts 隐藏文件夹
Standard Assets 第一批加载的文件
Editor 文件夹,只在编辑器模式下有效。不会打入最后的运行包中
Plugins 与其他平台的交互
Resources 会打入运行包中,可以动态访问
Editor Default Resources 只提供给编辑器内部使用,
Gizmos 编译器的一些东西,用于自动以gizmos
streamingAssets 会打入运行包中,包含的是unity不能原生识别的资源,必然自己的json等,会映射到移动平台安装包的某一个可读文件夹
---------------------------------
编译器扩展方法
方法1:EditorWindow
方法2:CustomEditors
-----------------------------------
Input使用
鼠标键盘
Input.GetKey(KeyCode.A) // 任何状态的只有跟a有关都会调
Input.getKeyDown(KeyCode.A) // 第一次按下
Input.getKeyUp(KeyCode.A)// 松开,再次按下会得到getkeyDown
同理 Input.GetMouse
触摸:用于移动设备,
touches[] touches = InPut.touches;
包含每一个手指的fingerId,deltaposition(与上次触摸的间隔位置) deltaTime(与上次触摸的间隔时间),phase,positon
屏幕键盘 TouchScreenKeyBoard t= TouchScreenKeyBoard.open("默认文字“,keyBoardType.Default)
获取屏幕键盘用户的输入 t.Text
Texture 组件: 贴图,物体表面的材质对光的反射程度
1.2d贴图,(sprite(2D and UI))
2.天空盒子(Normal map)
3.3d贴图
TextureType: Advanced
Non Power of 2: 贴图的边长不是2的n次幂的处理方式,建议边长是2的ni次幂
1.在安卓或者pc 边长不是2的n次幂。会自动修改 必然 255 * 512 会改成 256 * 512 257 *512 会改成512 * 512
2.在ios平台 256 * 512 会转成512 * 512 意思就是要求贴图必须是方形的
Read/Write enabled 需要动态修改时必须勾选,勾选后内存会加倍
Import Type:默认是defalut normal 是法向贴图 light 是光照贴图
Generate Mip Maps:是否产生minmap 。意思是贴图远是会产生小图,同理内存会大
Wrap mode: clamp 采集到边缘-1从另一次再次采集 repeat则是一直采集边缘的值
Filter Mode: bilinear 小图到大图。point 找最近的点 bilinear 就是线性插值一个接近的点
Aniso level 一般设置为1,个样异性。必然远程的房子可以清晰,路就会模糊,那方式的aniso level值就是比较高的
Format 压缩格式
pc 建议用RGBA compressed DXT5 1:8
安卓 RGBcompressed ETC 4 1:8 无alpha通道
ios: RGB Compressed PVRTC 2 1:8
----------------------------------------------------
屏幕特效实现原理:
把当前渲染的一帧图像,先渲染到纹理,形成一张图片,然后对图片进行特效处理,最后把处理后的图片显示到屏幕上
导入unity 内置的屏幕特效
屏幕特效 :对场景在像素方面的处理
包:export - custom export -effect 挂载到camera上
image effect
比如Anitialiasing 反走样,。边缘锯齿,边缘模糊
bloom 物体边缘反射的光。像霓虹灯 名称叫灰光
blur 镜头模拟。高斯模拟
motion blur 物体模糊,就想人走路有残影
DOF 景深。焦点位置清晰,其他部分模糊,就想相机的聚焦,或者说人像模式
Global Fog 全局雾。效果不明显
Screen Space Anibient Occlusion 模拟物体的子遮挡。墙角的阴影
CubeMap 用于表达一个高光物体,光滑物体,比如赛车中的车,会有周围物体的倒影,对周围物体的反光
。对呀shader所在位置skybox -》 cubemap 需要的贴图是6张连着的图
------------------------------------------------------------
-----------------------------
数组转List
int[] g
List<int> listG = new :List<int>(g)
List转数组
List<int> listG = new :List<int>()
inT[] G = listG.ToArray();
------------------------------------------------