Unity3D 初探
Published
Contents
又好久没有更新 BLOG 了, 一定要坚持一个月至少一篇, 于是乎我又来记流水账了, 这一次就讲讲这一周折腾 Unity3D 的情况吧.
学习资料网上搜一大把, 主要学习资料来自于下面几个网站:
- http://www.unitymanual.com/topic/download/index.html
- http://www.xuanyusong.com/
- https://docs.unity3d.com/Documentation/ScriptReference/
- http://game.ceeger.com/Components/SL-Reference.html
- http://www.youtube.com/watch?v=hDJQXzajiPg
如果能系统的学习完还打算去官方下几个 demo 认真研究下.
对于 Unity3D 的吐槽
Unity3D 这个引擎, 上手还是比较简单的, 这得益于其编辑器, 用起来非常舒服, 几乎不用写代码就能够做出炫酷的效果, 代码上会点 javascript 就能完成很多事情, 可以说是非常的照顾设计师了. 因此网上的很多教程也比较偏向于设计师, 这让我有些许困惑, 作为程序员, 还是希望一切都能够用代码来控制, 好在编辑器能做到的绝大多数事情直接用代码也能做到, 但好像还是有些做不到需要用一些更复杂的代码甚至插件来实现.
不过 Unity 真心是一个非常赞的引擎, 认真查阅文档的话想做还是能做到的, 现在的 Unity3D 社区也非常活跃, 不过这玩意还真是贵, 貌似专业版要用 1500 刀.
在 Unity 里面写 shader 挺舒服的.
以上是一个新手不负责任的吐槽
对于 CSharp 的吐槽
CSharp 原来就是 C#, 我真是孤陋寡闻了, C# 的来源是 C++ 中的两个加号叠在一起, 巨硬的脑洞还真是大.
指针这个概念被取消掉还真是让人难受… struct 的等于号是拷贝而 class 的等号是传引用这还真是让人纠结, 万一我不知道我当前用的到底是 struct 还是 class 怎么破.
还有 托管(delegate) 和 事件(event), 为什么感觉就是函数指针和函数指针数组……
已经不太想去纠结语言特性了, 反正我就是吧它当 C++ 来用的, 以后上 java 小学期的时候再认真研究研究.
学习笔记
涂鸦式的笔记, 用这种大型软件需要积累的豆知识太多了, 随手记一下到时候也好查
day1
- 导入模型与动画
- 自带的材质与着色器的使用,高光,mip等等
- GUI按钮,纹理
- 立体声音与脚本控制
- 脚本创建物体,预设instantiate创建物体
- favorite保存搜索结果书签 多关键字搜索
day2
- 阴影要同时在投射者,接受者,灯光处设置
- 选择多个同时调整
- lock Inspector 让其固定显示一物体
- Debug 可以查看脚本中的私有变量
- 右上角创建 tab, shift + tab 最大化当前 tab
- 场景浏览
- 方向键移动
- 中键
- 右键切换视角 + WASD
- shift 加速
- 选择物体 F 到显示中心
- alt+左键,绕物体旋转
- shift + ctrl 吸附移动
- getComponent(type)
- GameObject.Find(name)
- GameObject.FindGameObject(s)WithTag(tagname)
- Time
- Time.time
- Time.deltaTime
- Time.fixedTime
- fixedDeltaTime
- smoothDeltaTime
- yield WaitForSeconds
- gameObject.sendMessage
- CSharp 中的 delegate/event
- OnMouseOver 重载
day3
- OnGUI 调用频率为每秒120次,高于刷新频率
- 各种可重载函数
- Screen 类
- Group Box
- GUILayout
- BeginHorizontal
- Space
- GUILayoutOption
- GUILayout.Width GUILayout.MinWidth GUILayout.ExpandHeight.
- C# 特性
- params 可变参数
- GUILayout.BeginArea(Rect)
- GUI.Window
- GUI.DragWindow
- 无法拖动窗口主要因为位置设置
day4
- TerrainData.Alphamaps 设置贴图混合
- setHeights
- heightMapScale
- GetSteepness 获得斜率
- GetInterpolatedHeight 高度插值
- C# 扩展方法 要static,this第一个参数
- Resource.Load
- TerrainData.splatPrototypes 添加纹理
day5
- Input.GetAxis 虚拟轴 平滑
- GameObject.CreatePrimitive(PrimitiveType.Cube)
- Input.GetMouseButton 0 l 1 r 2 m
- Input.GetKey KeyCode.UpArrow
- Rigidbody
- MovePosition
- AddForce
- velocity
- angularVelocity
- Destroy
- Event.clickCount
- Event 各种功能键
day6
- Character Controllers
- Animation Curve
- Rigidbody
- CollisionDetection
- OnTriggerStay
- Debug.DrawRay
- HingeJoint SpringJoint FixedJoint
- CharacterJoint swing + twist
day7
- iTween 平滑人物移动
- Pocket RPG Weapon Trails 移动痕迹 Trail Render
- camera.WorldToScreenPoint
- InteractiveCloth and SkinnedCloth
- ParticleSystem.Emit
- ParticleSystemRenderer.velocityScale
- OnParticleSystemCollision 在world下生效 双方
- ParticleSystemRender
- skybox 加在摄像机上
day8
- TreeCreator
- WindZone
- Screentoray 左下角0,0 而mousepos为左上角0,0
- Flare
- WrapMode
- Once 结束固定在第一帧
- ClampForever 结束固定在最后一帧
- Animation.enable
- Animation.Layer 动画层 优先级
- Animation.AddClip
- Animation.CrossFade
- AnimationBlendMode.Additive
- ragdoll 就只自动添加物理部件
day9
- Shader Properties 不要分号
- Blend SrcAlpha OneMinusSrcAlpha 渲染透明物体
- o.Normal 为扰动法相
- Input
- viewDir z 为深度
- uvXXX
- clip(x) 当x<0时丢弃
- Cull off front back 双面渲染,正反面
- saturate 出于01之间
- frac 取小数部分
- CG std lib http://http.developer.nvidia.com/Cg/index_stdlib.html
- build-in struct http://docs.unity3d.com/Documentation/Components/SL-SurfaceShaders.html
- INTERNAL_DATA
day10
- rendering paths
- forward
- UsePath “Diffuse/FORWARD”
- Material.SetColor(“xxx”, color)
- appdata_base/tan
- TANGENT 在法线贴图中的切向量
- surface can’t in pass
- [ExecuteInEditMode]
- Cull ZWrite ZTest
- Blend 用来混合 pass
- Blend x y = SrcColor * x + DstColor * y
- BlendOp Min | Max | Sub | RevSub
- vertex shader 需要对uv赋值
- TextureName_ST TRANSFORM_TEX
- _SinTime
day11
- RenderTexture.active
- source.SetGlobalShaderProperty (“_RenderTex“);
- Graphics.Blit(source, dest, mat);
- DepthTextureMode _CameraDepthTexture
- ZTest Always Cull Off ZWrite Off
- @script RequireComponent (Camera)
- island height map
- setrslt
- SkyBoxGenerator
- matcaps
- fake sss
- Renderer.sharedMaterial
- StaticBatchingUtility.Combine
- b.transform.parent = a.transform
- MeshCombineUtility
blog comments powered by Disqus