Android Studio 创建新工程,Tools - AVD Manager - Create Virtual Device - Phone - 选择相应的设备 - next
x86 Images - Oreo - next - finish
点击actons中的启动,则可以模拟出安卓手机
Android Studio 创建新工程,Tools - AVD Manager - Create Virtual Device - Phone - 选择相应的设备 - next
x86 Images - Oreo - next - finish
点击actons中的启动,则可以模拟出安卓手机
Project Settings - Editor,Unity Remote - Device - Any Android Device
手机中,设置 - 开发人员选项/关于手机 - USB调试
安装Unity Remote
手机和电脑连接usb线,确认手机中显示usb已连接和已连接usb调试
Unity Remote
Android Studio中,Android SDK - SDK Tools - Google USB Driver
Google Play上下载Unity Remote5,
顶点着色器输入语义
语义:
可以理解为是一个标记。
最终也就是让Shader知道在哪里读数据,并且把数据输出到哪里。
例如:
struct a2v
{
float4 texcoord : TEXCOORD0
}
上面a2v输入结构体中的语义 :TEXCOORD0
就是将第一套uv存储在变量 texcoord 中
如果在输出结构体v2f中我们仍然可以用
:TEXCOORD0 (即使输入结构体a2v中已经有:TEXCOORD0了我们仍然可以使用)这是因为
语义的另一个功能就是寄存器。
:SV_POSITION
(顶点着色器后使用)
例:float4 vert ( float4 v : POSITION ) : SV_POSITION
:SV_TARGET
(片元着色器后使用)
例:fixed4 frag ( ) :SV_TARGET
以上2种语义是特殊语义,不能乱用。
有时候我们能看见 SV_POSITION & SV_TARGETSV 被写成了 POSITION & TARGET 这是因为在DX10 之后引入了一个叫系统数值的语义。 这时候POSITION & TARGET 就有了他自己的目的需要去做的事情。所以我们就用SV_POSITION & SV_TARGETSV
如果不使用 SV_POSITION & SV_TARGETSV 而用 POSITION & TARGET 我们会发现在PS4上会出错。
我们理解为在DX10 之后为了兼容某些硬件,我们引入了新的语义 SV_POSITION & SV_TARGETSV 而 SV_POSITION & SV_TARGETSV 是包含 POSITION & TARGET。
顶点着色器输入结构体种的语义笔记
:POSITION
(模型空间中的顶点位置,通常是float4类型)
: NORMAL
(顶点法线,通常是float3类型)
:TANGENT
(顶点切线,通常是float4类型)
TEXCOORDn
( 顶点的纹理坐标,TEXCOOD0表示第一组uv坐标纹理通常是float2 , float4类型 )
(Shader Model2 & 3 可以支持最多 8 个TEXCOORD)
(Shader Model4 & 5 可以支持最多 16 个TEXCOORD)
COLOR
(顶点颜色,通常是fixed4类型)
Shader库中的输入输出结构体
1/
.cginc文件 可以被加载进我们的Shader中
例如
写如下代码在CGPROGRAM中,加载UnityCG.cginc文件
#iclude "UnityCG.cginc"
这样我们就可以直接使用“Unity CG.cginc”文件内的变量和方法了。
2/
UnityShaderUtiilities.cginc
UnityShaderVariables.cginc
以上俩个.cginc文件是默认被加载进Shader中的。
sdk中的tools太新了,unity无法识别
解决方法,android/sdk替换旧版的tools
设置包名Identification - Package Name
设置签名Publishing Settings - Keystore - Use Existing Keystore - Browse Keystore 选择密钥文件
Keystore password 输入密码
Alias - 选择密钥文件
Password 输入密码
同一签名的apk可以覆盖安装
Interal:
可以不签名(使用默认的debug签名)
Gradle:
必须要求自己签名
Internal:
Unity内置,仅需要Android SDK支持,不能导出工程,适用于仅使用到Unity开发的项目
优点:简单,逻辑由unity完成即可,不需要和安卓交互
Gradle:
使用Gradle进行构建,需要Android SDK与Gradle支持,可以导出Android Studio工程,适用于Unity与Android交互的项目
如果选择Gradle,勾上Export Project
api27不做高端的安卓开发用不到,可以取消勾选
相应的26需要勾选,点击apply
安装android studio
在安装页面,勾选Performance(Intel@HAXM)和Android Virtual Device
jdk的数字签名是否有效
安装JDK与JRE,目录随意,但不可以是同一个
安装完成后,右键“此电脑”,高级系统设置-环境变量-系统变量,新建“JAVA_HOME”变量,变量值为JDK的根目录
找到path,点击编辑 - 编辑文本,添加JDK和JRE的根目录,用分号隔开
再新建,变量名CLASSPATH,变量值.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;
在运行管理器中输入java -version,验证是否配置成功
Build Settings窗口中下载安卓的支持包
安装java环境,即jdk,下载合适的版本,windows x64,建议用ie下载
下载android studio
结构体可以实现接口
父节点可以引用子节点,子节点要调用父节点的方法时,可以用事件和委托。
属性控制
内容概要
1/属性快
Properties
{
_MainTex("Texture",2D) = "white"{ }
_Color("Color",Color) = (1,1,1,1)
}
定义的属性块需要在CGPROGRAM中再次进行定义
.xyzw 和 .rgba 是一样的。
当我们的一个变量是3维的(例如:float3 color)
那么我们需要用一个3维的去与他相乘,(例如:color *= _Color.rgb),如果用非3维的向量去与之相乘会报错。
无框架的项目不用完全杜绝,体量小的一次性项目
private static 在同一个类名脚本中都可以访问到。
输出结构体
构造函数a2v的命名
a: application 应用
2:to 到
v: vert 顶点着色器
构造函数v2f的命名
v: vert 顶点着色器
2:to 到
f:frag 片元着色器
本节概要
Shader中2个构造函数名字的含义。
2个构造函数中各个成员语义的意义。
顶点着色器返回值和写法讲解。
如何将区间(-1,1)转变为(0,1)。