unity初识
只爱艾薇儿
这个作者很懒,什么都没留下…
展开
-
untiy初识之 同时修改一个控件及其孩子的alpha值
如果其他控件是普通母控件的孩子,没有办法只改变母控件的alpha值让孩子也收影响,unity中的实现跟cocos和egret是不一样的,一种方法,通过母控件,获取所有在自己身上的子控件,递归遍历每一个,挨个去设置alpha值第二种方式,就是在母控件上加一个canvas group 通过它来设置它的alpha值。https://docs.unity3d.com/ScriptRef...原创 2018-03-06 17:27:56 · 583 阅读 · 1 评论 -
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 评论 -
untiy 初识之逐渐移动一个向量
untiy 初识之逐渐移动一个向量 https://docs.unity3d.com/ScriptReference/Vector3.SmoothDamp.htmlsmoothDamp 渐进在一段时间内的改变一个向量到期望的位置。 常在追随相机中使用....原创 2018-03-06 15:43:42 · 393 阅读 · 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 评论 -
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 评论 -
Unity初识之StartCoroutine
写tutorial的时候,遇到一个情况,就是移动所有怪物的时候,需要有一个移动的操作,而这里当轮到自己或者小怪走的时候,需要在一个代码段里,让执行逻辑等这个移动动画做完之后再去继续。以前的做法是,比如遍历一遍所有小怪,在播放一个小怪动画的时候,delay一段时间,然后回调,播放第二个,以此类推。这里可以用协程的概念去减少之前那种做法的控制逻辑代码。在移动的时候,需要让小...原创 2018-02-24 18:07:51 · 1533 阅读 · 0 评论 -
Unity初识之函数delay调用
之前用egret或者cocos,想要delay都是用的timer,unity这里有个Invoke,可以设置delay时间单位是秒官方文档using UnityEngine;using System.Collections.Generic;public class ExampleScript : MonoBehaviour{ // Launches a projectile ...原创 2018-02-24 17:39:48 · 4265 阅读 · 1 评论 -
Unity初识之场景切换
看以前其他人做的游戏代码切换用什么Level的。 OnLevelWasLoaded 来接收回调新版本中,有个scenemanager的, 可以通过loadScene来切换场景。比如项目中创建了几个scene在File->build setting 中分别添加场景场景是有对应的索引值的。最简单的切换场景,直接SceneManager...原创 2018-02-24 17:33:24 · 602 阅读 · 0 评论 -
Unity初识之代码中跟editor中属性的显示控制
如果脚本类中,声明属性是public 的,在editor中可以看到这个属性字段,并且可以在editor中给他赋值,覆盖掉在声明字段时的初始值。[Serializable] https://docs.unity3d.com/ScriptReference/Serializable.html可以指定一个类型,这个类型下的属性,可以再inspector中显示出来,并赋值.[Se...原创 2018-02-24 16:55:42 · 1097 阅读 · 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初识之坐标转换
从世界坐标系转换为本地的坐标系 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 评论 -
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 · 2005 阅读 · 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 · 358 阅读 · 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 · 888 阅读 · 0 评论 -
untiy初识之 暂停游戏
Time.TimeScale https://docs.unity3d.com/ScriptReference/Time-timeScale.html原创 2018-03-06 16:30:33 · 237 阅读 · 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 · 441 阅读 · 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初识之物体之间层次关系
如果遇到3d模型需要分层次的渲染显示的话 ,可以使用创建多个camera ,再配合模型设置不同的layer ,修改不同camera的 depth 和culling mask需要显示的layer ,和修改clear flags方式,综合作用例如这里,气泡框是个ui,它是在小人模型上的,而汽车是另外一个模型,当同一个摄像机的时候,当气泡的ui位置遮挡了汽车或者汽车遮挡了ui的话,就会得不到...原创 2018-03-06 16:25:33 · 230 阅读 · 0 评论 -
unity初识之shader 工具
我这里用的还是在mac上的 vscode ,提供语法高亮和代码片段的原创 2018-03-06 16:01:53 · 313 阅读 · 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 · 1088 阅读 · 0 评论 -
Unity初识之游戏入口
相比egret和cocos ,unity没有一个明确的标准的入口,比如某一个引擎指定的或者自己指定入口类名的地方换名字的地方。而是更开放了点。。。。觉得会有更多的启动整个自己游戏逻辑的方式吧。不过我自己。。。。还是沿用以前的经验,在主 camera上绑定一个自己实现的入口来,来进入自己写的游戏逻辑中。...原创 2018-02-24 16:42:06 · 3171 阅读 · 0 评论 -
Unity初识之动画
在editor中可以根据序列帧动画的图片,直接创建出对应的animation和animator选中一组动画的序列帧直接拖拽到gameobject上就可以创建了(把动画编辑器直接融合到了edior中,真是吊啊,还很方便做小游戏)一个animator相当于一个controller,可以添加多个animation ,各个animation直接的触发可以通过代码中触发trigger来实现,需要...原创 2018-02-24 16:39:35 · 157 阅读 · 0 评论 -
Unity初识之prefabs
在之前工作中,达到untiy中prefabs类似的使用方法也有,比如cocos或者egret中,会有ui编辑器,然后生成一个皮肤的东西,来提供给代码段控制使用,其实能主要突出的载体更倾向于代码端我觉得。他们的ui编辑器也试图做一些预处理的事情,比如通过ui绑定数据,文本显示等。但是他们确实只管了ui的显示了,纯粹的ui皮肤,具体的其他属性,必须在对应的逻辑类中,手动声明和绑定。并且一个Ui只能...原创 2018-02-24 16:29:33 · 411 阅读 · 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 · 1245 阅读 · 0 评论 -
untiy初识之如何让3d物体显示在Ui中,
将Canvas的render mode设置为 camera 这样物体就能在以camera直接映射到屏幕上。原创 2018-03-07 11:38:55 · 926 阅读 · 0 评论 -
untiy初识之动画播放
动画中,如果从一个animation切换到另一个, 如果第二个不是循环的,它会停在最后一帧。 如果第二个是循环的,它会一直循环第二个 如果第二个后面还有动画切换,如果该切换没有条件,就是默认的结束播放后直接切换到第三个 如果第二个后面还有动画切换,如果该切换有条件,那么按第二个动画自己的逻辑走。而由默认动画出来的第二个动画,必须有一个条件,否则后面的动画都会被忽略,不会自动播放...原创 2018-03-07 11:33:26 · 271 阅读 · 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 · 930 阅读 · 0 评论 -
untiy初识之tag格式图片和纹理压缩的知识
http://www.cnblogs.com/fuckgiser/p/5497013.html转载 2018-03-07 11:20:27 · 1019 阅读 · 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 · 337 阅读 · 0 评论 -
untiy初识之 按钮上遮盖了图片,如果不让图片响应点击
image上增加 canvas group , 将blocks raycasts 不勾选,就不会阻碍射线判断了原创 2018-03-07 11:15:21 · 1957 阅读 · 0 评论 -
untiy初识之 按钮点击ui 如何进行射线判断点到了哪个东西上
可以在update中检测当前点到了东西并且如果有需求的话可以判断是点到了gameobject .通过这样就行过滤。这时候,比如ui有重叠,或者ui层跟实际的3d模型在点击的位置是重叠的,这时候就需要区分下,比如ui在上面,点到了某个ui需要穿透,响应下面的点击逻辑,而有的ui不需要穿透,对下面的东西是遮盖的关系。对当前的点击事件处理,获得当前点击屏幕的位置,然后EventSyste...原创 2018-03-07 11:13:16 · 1419 阅读 · 0 评论 -
untiy初识之 scroll rect 上放置东西进行点击
比如滑动列表,上面放了物品,这时需要点击背景图响应一些逻辑如果用添加eventTrigger的方式。会把底下面板的scroll覆盖掉.想要两者并存,既能滑动,又能点击,可以不直接使用EventTrigger控件,在需要实现点击的ui上,添加控制脚本using System.Collections;using System.Collections.Generic;usi...原创 2018-03-07 11:03:39 · 589 阅读 · 0 评论 -
unity初识之添加 gameobjectpool 对象池
有的时候,我们需要动态创建某个对象,比如点击就会出现漂浮的文本提示,漂浮的奖励等等,他们可能会创建很多,而且很快就会被销毁,并且创建销毁的操作很频繁,如果太频繁,会很耗性能,好的办法是,当创建出来后,把它存在内存中,需要销毁的时候只是把它隐藏了,放在对象池中,等需要用了,再从对象池中把它拿出来显示。这样省去了频繁创建,销毁的操作。这里自己写了一个泛型的对象池类using System....原创 2018-03-07 12:03:18 · 530 阅读 · 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 · 431 阅读 · 0 评论 -
Unity初识之淡入淡出切换scene
首先切换scene 使用sceneManagerSceneManager.LoadScene("Shop");具体的scene的名字,是按照中的scene的索引值来设置的。现在需要写一个shader ,来做纹理颜色的处理,将纹理按钮某个值,从白色变到黑色。或者黑色变成白色,可以达到淡入淡出的效果.关于Graphics.Blit中的mat参数,Material to use. ...原创 2018-03-07 12:52:28 · 2841 阅读 · 0 评论 -
Unity初识之将小图打包成大图
Sprite Packer 打包成大图 官方文档配置: Edit->project setting->Editor 可以选一直启用还是关闭还是在build的时候才启用 例如选择两个图片 ,把他们的packing Tag设置为相同的字符串 然后在window->Sprite Packer 打开Sprite Packer窗口 点Pack,就可以...原创 2018-02-24 16:19:41 · 2072 阅读 · 0 评论 -
Unity初识之 yield 与 IEnumerator
IEnumerator 使用 https://docs.microsoft.com/en-us/dotnet/api/system.collections.ienumerable?view=netframework-4.7.1 c#文档解释 https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/y...原创 2018-02-24 15:56:11 · 1260 阅读 · 0 评论 -
Unity初识之阿语显示
我在github上的总结在某个文件中设置阿语的字符串,但是在设置文本的时候,直接取值显示会出错,需要对字符串进行修改显示。 在AssetsStore中使用一个免费的字符串插件: Arabic Support https://www.assetstore.unity3d.com/en/#!/content/2674还有一个一直在加新功能,收费的: Easy Alphabet Arabic...原创 2018-02-24 15:00:35 · 2002 阅读 · 2 评论