Unity初识
从coco2dx转战到egret再转到untiy.
在初次接触Untiy的一个月的学习中和在做第一款练手的小的独立游戏过程中遇到的小问题的总结
只爱艾薇儿
这个作者很懒,什么都没留下…
展开
-
unity初识 开篇
我是从cocos2dx转到egret,现在又想转来做unity的,这个专栏是用来记录我在自己做第一个独立游戏时候,遇到的问题,和如何解决的。基本上记录了60个左右遇到的小问题吧。挨个解决了之后,就做出了个小游戏,这个游戏重点不在游戏设计上,而是在于对unity的接触使用和熟悉。并且对ios上线流程的熟悉。因为之前有做过googleplay和facebook,还有国内一些渠道上的整体上限流程,这里就...原创 2018-03-07 13:21:10 · 490 阅读 · 4 评论 -
Unity初识之淡入淡出切换scene
首先切换scene 使用sceneManagerSceneManager.LoadScene("Shop");具体的scene的名字,是按照中的scene的索引值来设置的。现在需要写一个shader ,来做纹理颜色的处理,将纹理按钮某个值,从白色变到黑色。或者黑色变成白色,可以达到淡入淡出的效果.关于Graphics.Blit中的mat参数,Material to use. ...原创 2018-03-07 12:52:28 · 2841 阅读 · 0 评论 -
untiy初识之 按钮点击ui 如何进行射线判断点到了哪个东西上
可以在update中检测当前点到了东西并且如果有需求的话可以判断是点到了gameobject .通过这样就行过滤。这时候,比如ui有重叠,或者ui层跟实际的3d模型在点击的位置是重叠的,这时候就需要区分下,比如ui在上面,点到了某个ui需要穿透,响应下面的点击逻辑,而有的ui不需要穿透,对下面的东西是遮盖的关系。对当前的点击事件处理,获得当前点击屏幕的位置,然后EventSyste...原创 2018-03-07 11:13:16 · 1421 阅读 · 0 评论 -
untiy初识之 按钮上遮盖了图片,如果不让图片响应点击
image上增加 canvas group , 将blocks raycasts 不勾选,就不会阻碍射线判断了原创 2018-03-07 11:15:21 · 1958 阅读 · 0 评论 -
untiy初识之 Raycast遇到的问题
换了模型之后 底盘太低了,导致如果从模型位置开始发射线检测的话,就会碰不到。。。 找了半天 因为模型太低的原因,把发射线放上放了放 private bool isNearCars <T>(out T targetCar) where T: Component { Vector3 startPos = this.m_rigidBody.positio...原创 2018-03-07 11:16:51 · 342 阅读 · 0 评论 -
untiy初识之tag格式图片和纹理压缩的知识
http://www.cnblogs.com/fuckgiser/p/5497013.html转载 2018-03-07 11:20:27 · 1020 阅读 · 0 评论 -
untiy初识之 ios读取本地数据文件
http://blog.csdn.net/yhy2218/article/details/50789711直接放在Resource文件下的数据是不可读的。用streamingAssets才可以 或者Application.datapath后 在Raw文件夹下读取流资源https://docs.unity3d.com/ScriptReference/Application-stream...原创 2018-03-07 11:28:18 · 936 阅读 · 0 评论 -
untiy初识之动画播放
动画中,如果从一个animation切换到另一个, 如果第二个不是循环的,它会停在最后一帧。 如果第二个是循环的,它会一直循环第二个 如果第二个后面还有动画切换,如果该切换没有条件,就是默认的结束播放后直接切换到第三个 如果第二个后面还有动画切换,如果该切换有条件,那么按第二个动画自己的逻辑走。而由默认动画出来的第二个动画,必须有一个条件,否则后面的动画都会被忽略,不会自动播放...原创 2018-03-07 11:33:26 · 273 阅读 · 0 评论 -
untiy初识之如何让3d物体显示在Ui中,
将Canvas的render mode设置为 camera 这样物体就能在以camera直接映射到屏幕上。原创 2018-03-07 11:38:55 · 928 阅读 · 0 评论 -
untiy初识之 c#中判断子类是否是基类
使用泛型或者继承的时候,有时需要判断是否是某一个基类,然后去做一些基于基类的操作,。 但是所比较的实例或者类型往往是子类, 直接typeof 两个类型后 用==比较不行。用IsAssignableFrom,https://msdn.microsoft.com/en-us/library/system.type.isassignablefrom(v=vs.110).aspx比如这里需...原创 2018-03-07 11:47:13 · 1246 阅读 · 0 评论 -
unity初识之添加 gameobjectpool 对象池
有的时候,我们需要动态创建某个对象,比如点击就会出现漂浮的文本提示,漂浮的奖励等等,他们可能会创建很多,而且很快就会被销毁,并且创建销毁的操作很频繁,如果太频繁,会很耗性能,好的办法是,当创建出来后,把它存在内存中,需要销毁的时候只是把它隐藏了,放在对象池中,等需要用了,再从对象池中把它拿出来显示。这样省去了频繁创建,销毁的操作。这里自己写了一个泛型的对象池类using System....原创 2018-03-07 12:03:18 · 530 阅读 · 0 评论 -
untiy初识之 scroll rect 上放置东西进行点击
比如滑动列表,上面放了物品,这时需要点击背景图响应一些逻辑如果用添加eventTrigger的方式。会把底下面板的scroll覆盖掉.想要两者并存,既能滑动,又能点击,可以不直接使用EventTrigger控件,在需要实现点击的ui上,添加控制脚本using System.Collections;using System.Collections.Generic;usi...原创 2018-03-07 11:03:39 · 592 阅读 · 0 评论 -
unity 初识之shaderLab Syntax
https://docs.unity3d.com/Manual/SL-Shader.htmlunity中关于shader的文件使用的都是叫shaderLab的一个语言, 其中CGPROGRAM 中的代码片段和 HLSL/CG语言类似的着色器语言。每个文件都必须定义一个Shader的root command ,shader “name” {[Properties] SubShaders ...原创 2018-03-07 12:43:07 · 432 阅读 · 0 评论 -
untiy初识之初始化一个prefebs后setparent到其他gameobject上scale坐标改变
宣玉松的一篇关于解释的文章 unity中如果parent从一个地方,转到另一个地方,是会做仿射变换的,平移旋转缩放,不像cocos或者egret中,如果从parent拿出来放到另一个里,position ,rotation , scale都是保持自身属性不变的。 GameObject item = Instantiate(m_ItemCell); ...原创 2018-03-07 10:46:42 · 819 阅读 · 0 评论 -
Unity初识之 start 和 awake 的区别
https://docs.unity3d.com/ScriptReference/MonoBehaviour.Awake.htmlhttps://docs.unity3d.com/ScriptReference/MonoBehaviour.Start.htmlawake 是在一个脚本的实例被加载时候调用的,必然会被调用,awake是在start方法调用之前调用的。start 是在脚本是...原创 2018-03-06 16:47:18 · 360 阅读 · 0 评论 -
unity初识之计算两个矢量间的距离
Vector3 beginPos = beginObj.position; Vector3 endPos = targetObj.position; Vector3 dist = endPos - beginPos ; float distance = dist.magnitude ;magnitude https://docs.unity3d.com/ScriptReference/...原创 2018-03-06 15:37:17 · 1735 阅读 · 0 评论 -
untiy 初识之富文本
eg: https://docs.unity3d.com/Manual/StyledText.htmlRichText 在ui系统和旧的ui上,都有支持。 在现在的 UI System 中可以通过标签来设置文本的一些属性,ToHtmlStringRgb可以通过Color 获取颜色的16进制对应的文本 https://docs.unity3d.com/ScriptRef...原创 2018-03-06 15:41:41 · 262 阅读 · 0 评论 -
untiy 初识之逐渐移动一个向量
untiy 初识之逐渐移动一个向量 https://docs.unity3d.com/ScriptReference/Vector3.SmoothDamp.htmlsmoothDamp 渐进在一段时间内的改变一个向量到期望的位置。 常在追随相机中使用....原创 2018-03-06 15:43:42 · 393 阅读 · 0 评论 -
untiy 初识之改变相机显示的正交大小
https://docs.unity3d.com/ScriptReference/Camera-orthographicSize.html当camera是 orthographic 的prjection时, 可以改变该相机的view的正交大小https://docs.unity3d.com/Manual/CamerasOverview.html ...原创 2018-03-06 15:46:11 · 733 阅读 · 0 评论 -
unity初识之坐标转换
从世界坐标系转换为本地的坐标系 InverseTransformPoint https://docs.unity3d.com/ScriptReference/Transform.InverseTransformPoint.html从本地坐标系,转换为世界坐标系 TransformPoint https://docs.unity3d.com/ScriptReference/Transfo...原创 2018-03-06 15:47:09 · 179 阅读 · 0 评论 -
unity初识之求多个坐标向量的中间位置向量
把各个点向量加起来,除以点的个数。原创 2018-03-06 15:48:47 · 3085 阅读 · 0 评论 -
unity 初识之audio mixer初使用
可以给不同的声音 audio clips 进行设置,分组。可以调节初始音乐音量的大小。 在已经绑定的object上,audio srouce 组件上out设置为对应分组的绑定。比如在播放音效的时候,让音乐的声音变小,音效不播时候,背景音乐恢复原大小在music分组上右键 add Effect before -> Duck Volume , 在sfx分组上右键 Add Effe...原创 2018-03-06 15:57:46 · 3832 阅读 · 0 评论 -
unity初识之IL ,CIL
一个国内的解释 https://zhuanlan.zhihu.com/p/19972689大概意思是,之前用的方式是,通过mono虚拟机,用CIL编译在Mono虚拟机上实现的跨平台。unity 自己搞了个IL2cpp的东西,可以通过这个把IL语言转成c++,在通过native c++ compiler编译成 Native binary,提升性能和可以使用一些特性,不受mono的限制....原创 2018-03-06 15:59:12 · 1089 阅读 · 0 评论 -
unity初识之shader 工具
我这里用的还是在mac上的 vscode ,提供语法高亮和代码片段的原创 2018-03-06 16:01:53 · 315 阅读 · 0 评论 -
untiy初识之物体之间层次关系
如果遇到3d模型需要分层次的渲染显示的话 ,可以使用创建多个camera ,再配合模型设置不同的layer ,修改不同camera的 depth 和culling mask需要显示的layer ,和修改clear flags方式,综合作用例如这里,气泡框是个ui,它是在小人模型上的,而汽车是另外一个模型,当同一个摄像机的时候,当气泡的ui位置遮挡了汽车或者汽车遮挡了ui的话,就会得不到...原创 2018-03-06 16:25:33 · 230 阅读 · 0 评论 -
untiy初识之 写自己的snippets
会有很多重复的,但是必须的那种结构类型的代码,就可以用snippets来预先写好代码段,省去很多的操作。 输入自己设置的前缀,就可以在写代码时候有智能提示了https://code.visualstudio.com/docs/editor/userdefinedsnippets在mac上 Code->Preference->User Snippets ...原创 2018-03-06 16:27:04 · 287 阅读 · 0 评论 -
untiy初识之 在代码中设置ui点击并且传多个参数
m_btnContinue.onClick.AddListener(delegate() {this.handleTouch(m_btnContinue );} );//或者m_btnHome.onClick.AddListener(()=> {this.handleTouch(m_btnHome );} );private void handleTouch(Button btn) ...原创 2018-03-06 16:29:07 · 443 阅读 · 0 评论 -
untiy初识之 暂停游戏
Time.TimeScale https://docs.unity3d.com/ScriptReference/Time-timeScale.html原创 2018-03-06 16:30:33 · 238 阅读 · 0 评论 -
untiy初识之playerPrefs 和jsonUtility结合存储数据
playerPrefs 可以将数据存储到本地。cocos egret 都有类似的 比如egret的 localstorageplayerprefs 函数比较少,只用来做存储用json utility 例子using System;[Serializable]public class PlayerInfo { public int score { get; ...原创 2018-03-06 16:34:08 · 890 阅读 · 0 评论 -
untiy初识之 已知一个中心点,和另一点,求该方向上距离中心点S的点坐标
//算出两点间的单位方向向量,再根据距离,算出最终需要移动的位置 Vector2 center = new Vector2(Screen.width/2 , Screen.height/2); Vector2 directVec = (center - new Vector2(img.transform.position.x ...原创 2018-03-06 17:24:02 · 2006 阅读 · 0 评论 -
untiy初识之 同时修改一个控件及其孩子的alpha值
如果其他控件是普通母控件的孩子,没有办法只改变母控件的alpha值让孩子也收影响,unity中的实现跟cocos和egret是不一样的,一种方法,通过母控件,获取所有在自己身上的子控件,递归遍历每一个,挨个去设置alpha值第二种方式,就是在母控件上加一个canvas group 通过它来设置它的alpha值。https://docs.unity3d.com/ScriptRef...原创 2018-03-06 17:27:56 · 585 阅读 · 1 评论 -
unity初识之2d游戏中做碰撞检测
。。。。后来用多了才知道是普通的射线判断碰撞检测检测从某一点出发,到某一点之间,是否有其他物体。,用这种方式可以判断,是否可以行进等逻辑。方法是,用RaycatHit2d ,该检测的gameobject是一个boxcollider2d类型的并且他们两个的layermask是在同一层上, linecast去检测,从起始点到结束点,在指定的layermask这一层上,是否有跟这条线碰撞到...原创 2018-03-02 18:58:30 · 8053 阅读 · 0 评论 -
unity初识之给颜色做混合
在制作tank引导游戏时候,看到Untiy中如何给图片颜色做blend的, 使用的是 Color.Lerp();https://docs.unity3d.com/ScriptReference/Color.Lerp.html是线性的按比例调配颜色。...原创 2018-03-02 18:59:30 · 828 阅读 · 0 评论 -
unity初识之Quaternion和旋转
与之前做2d游戏不一样,3d游戏中,角度变换,用四元数来表示和计算什么是欧拉角四元数欧拉旋转一个女生的文章unity对于四元数的定义在学习3d数学或者学习shader的书籍里,都会有一章是先学下向量,矩阵的知识。矩阵的几何意义是变换,几种变换里用的多的也是unity的Transform组件中用到的:平移,旋转(rotation),缩放(scale)。 缩放和旋转是一个线性...原创 2018-03-02 19:46:34 · 15006 阅读 · 1 评论 -
Unity初识之游戏入口
相比egret和cocos ,unity没有一个明确的标准的入口,比如某一个引擎指定的或者自己指定入口类名的地方换名字的地方。而是更开放了点。。。。觉得会有更多的启动整个自己游戏逻辑的方式吧。不过我自己。。。。还是沿用以前的经验,在主 camera上绑定一个自己实现的入口来,来进入自己写的游戏逻辑中。...原创 2018-02-24 16:42:06 · 3172 阅读 · 0 评论 -
Unity初识之联调
因为之前工作是做h5游戏,使用的是egret,他的编辑器是基于vscode再开发的一个ide,习惯用了,所以没有用Untiy带的那个什么monoDevelop的工具,还是使用的纯vscode .如何使用vscode跟untiy editor进行联调网上google一下很多。vscode中联调的插件vscode中直接选untiy editor直接run , 然后在edit...原创 2018-02-24 16:47:47 · 345 阅读 · 0 评论 -
unity初识之skin
背景: IMGUI已经是旧的ui系统了,看到这个是之前公司拿到一个几年前的用Untiy做的游戏,想要换皮,我来负责把ui和文本换掉,所以看到了这里。新的UI系统,用起来比这个简单,我感觉。文档 https://docs.unity3d.com/Manual/class-GUISkin.html使用GUI(IMGUI)时可以设置GUI的skin, 可以使用默认的也可以自定义,在unity...原创 2018-02-24 14:51:00 · 1172 阅读 · 0 评论 -
Unity初识之打包错误
unity项目从5.0.0升级到5.6.3f1 代码中打包Android的apk包, BuildPipeline中,获取fileName,输出路径的时候,需要获取输出路径 之前是用的Aplication.dataPath来获取。 但是运行打包会提示Assets路径不能访问之类的情况. Building to the Assets folder is not allowed.猜它会对...原创 2018-02-24 14:54:04 · 2448 阅读 · 0 评论 -
Unity初识之将小图打包成大图
Sprite Packer 打包成大图 官方文档配置: Edit->project setting->Editor 可以选一直启用还是关闭还是在build的时候才启用 例如选择两个图片 ,把他们的packing Tag设置为相同的字符串 然后在window->Sprite Packer 打开Sprite Packer窗口 点Pack,就可以...原创 2018-02-24 16:19:41 · 2073 阅读 · 0 评论 -
Unity初识之阿语显示
我在github上的总结在某个文件中设置阿语的字符串,但是在设置文本的时候,直接取值显示会出错,需要对字符串进行修改显示。 在AssetsStore中使用一个免费的字符串插件: Arabic Support https://www.assetstore.unity3d.com/en/#!/content/2674还有一个一直在加新功能,收费的: Easy Alphabet Arabic...原创 2018-02-24 15:00:35 · 2007 阅读 · 2 评论