unity

Unity Math与Mathf用法

安稳与你 提交于 2019-12-25 17:47:50
Mathf.Abs绝对值 计算并返回指定参数 f 绝对值。 Mathf.Acos反余弦 static function Acos (f : float) : float 以弧度为单位计算并返回参数 f 中指定的数字的反余弦值。 Mathf.Approximately近似 static function Approximately (a : float, b: float) : bool 比较两个浮点数值,看它们是否非常接近, 由于浮点数值不精确,不建议使用等于来比较它们。例如,1.0==10.0/10.0也许不会返回true。 public class example : MonoBehaviour { publicvoid Awake() { if(Mathf.Approximately(1.0F, 10.0F / 10.0F)) print("same"); } } Mathf.Asin反正弦 static function Asin (f : float) : float 以弧度为单位计算并返回参数 f 中指定的数字的反正弦值。 Mathf.Atan2反正切 static function Atan2 (y : float, x :float) : float 以弧度为单位计算并返回 y/x 的反正切值。返回值表示相对直角三角形对角的角,其中 x 是临边边长,而 y

Unity3D播放视频

北慕城南 提交于 2019-12-25 06:17:05
原地址:http://blog.csdn.net/awnuxcvbn/article/details/17618919 点击这里下载视频转换器 ,该转换器会把其他格式转化为ogv格式,直接被unity识别,不需要安装quicktime不需要重启,更为重要的是比把mov导入unity的要清晰。 [csharp] view plain copy print ? using UnityEngine; using System.Collections; public class MovieTest : MonoBehaviour { //电影纹理 public MovieTexture movTexture; void Start() { //设置当前对象的主纹理为电影纹理 renderer.material.mainTexture = movTexture; //设置电影纹理播放模式为循环 movTexture.loop = true ; //StartCoroutine(DownLoadMovie()); } void OnGUI() { if (GUILayout.Button( "播放/继续" )) { //播放/继续播放视频 if (!movTexture.isPlaying) { movTexture.Play(); } } if (GUILayout.Button(

Unity 获取某个文件夹下的所有图片并进行展示(亲测有效)

自闭症网瘾萝莉.ら 提交于 2019-12-25 04:34:08
功能实现如题。如何将某个文件夹下的所有图片找出来,这是将程序中一个截图功能截取到的所有图片进行展示出来的功能需求,但是因为是通过GUI的方式,我感觉缺陷很大,下面有修改过的版本。 using UnityEngine ; using System . Collections . Generic ; using System . IO ; public class LoadAllImage : MonoBehaviour { // 储存获取到的图片 List < Texture2D > allTex2d = new List < Texture2D > ( ) ; // Use this for initialization void Start ( ) { load ( ) ; } void OnGUI ( ) { if ( allTex2d . Count != 0 ) { // 把保存的图片以Button的形式显示出来 for ( int i = 0 ; i < allTex2d . Count ; i ++ ) { GUILayout . Button ( allTex2d [ i ] ) ; } } } void load ( ) { List < string > filePaths = new List < string > ( ) ; string imgtype =

修正半透明头发的渲染异常

霸气de小男生 提交于 2019-12-25 03:30:25
修正半透明头发的渲染异常 这两天在整理 小甜甜 的捏脸系统,顺带把前项目 半透明头发渲染异常的bug 修正了,效果如下: 其实,前项目的头发工作良好,只是有一点 半透明渲染顺序 的小瑕疵,但正如前文 一个自阴影的Bug 所提到的:我在迁移shader的时候因为偷懒,把头发改成了 Surface Shader ,从而带来了一些新的问题。 问题一:关于Surface Shader的alpha指令 首先,我犯了第一个错误,改 Surface Shader 的过程中,我漏掉了 alpha 指令的设置,shader变成了 实体渲染 ,表现如下: 关于 Surface Shader的alpha指令 ,可以参考Unity帮助文档: alpha or alpha:auto - Will pick fade-transparency (same as alpha:fade) for simple lighting functions, and premultiplied transparency (same as alpha:premul) for physically based lighting functions. alpha:blend - Enable alpha blending. alpha:fade - Enable traditional fade-transparency.

unity与android交互总结

半世苍凉 提交于 2019-12-24 18:00:11
在网上找了很多教程,基本上使用的方法都是在eclipse上新建普通android工程,让主activity继承UnityPlayerActivity,然后在该activity中写供unity调用的接口或者主动要回调unity的接口,然后导出jar包到unity。 这种方式只要人品不好就会出一堆乱七八糟的问题:   如新建工程时选择SDK版本小于4.0时在unity build APK时报错,因为style.xml就不会有parent="Theme.AppCompat.Light,而是parent="android:Theme.Light";   如成功在unity打包出apk后运行时根本进不了unity中的场景内容而是直接进入了android中的activity(可能原因是电脑上的android环境和unity(或者操作系统)是不同版本的,一个是32位一个是64位)   如.... 也试过用android studio,以为官方的东西可能靠谱一些,结果发现android studio不能直接导出jar包,需要新建library再修改配置发布文件等等多个复杂步聚……最终生成jar包了,然并卵,仍然不能使用,貌似生成的jar包内容不对,遂放弃,不想继续研究了,也许是我方法出错…… 以下是我认为最靠谱省事的办法:   1.unity中新建空项目。   2.选择导出android工程。  

云服务器桌面环境哪个好

…衆ロ難τιáo~ 提交于 2019-12-24 16:36:11
云服务器桌面环境哪个好?我们对于 Windows 的图形界面化比较熟悉,这也催生了Linux 系统的图形界面环境。云服务器Linux 中的桌面环境也是一个程序,它和内核不是绑定的,两者的开发也不是同步的。 Linux 服务器为了节省资源,一般都不会安装桌面环境。这里宵云网络介绍几种比较流行的桌面环境。 Unity Unity 使用了不同的界面风格,如果你用的是 Ubuntu Linux 发行版,你会注意到 Unity 与 KDE 和 GNOME 桌面环境有些不一样。 Unity 很简单、运行速度快,但 Unity 在系统设置下却没有定制桌面的太多选项,要想安装主题或者定制另外不同的选项,比如系统菜单是否应该总是可见,或者“从启动器图标一次点击最小化”,用户需要安装第三方工具。 GNOME 桌面环境 GNOME 是 the GNU Network Object Model Environment 的缩写,中文译为“GNU网络对象模型环境”。现已成为许多Linux发行版默认的桌面环境(不过用得最多的是 Red Hat Linux)。 GNOME 的特点是简洁、运行速度快,但是没有太多的定制选项,用户需要安装第三方工具来实现。适合那些不需要高度定制界面的用户。GNOME 被用作 Fedora 中的默认桌面环境,提供在几款流行的 Linux 发行版中,比如 Ubuntu、Debian

关于Unity的协程(Coroutine)

六月ゝ 毕业季﹏ 提交于 2019-12-24 04:57:53
参考博客: http://www.unity.5helpyou.com/2658.html 什么是协程?(又称协同程序) 协程类似于函数,可以暂停执行(yield return xxx 之后的代码) , 在下一帧时再次判断是否继续执行。 协程不是多线程,它与主线程同时运行,它在主线程运行的同时开启另一段逻辑处理,类似一个子线程单独出来处理一些问题,性能开销较小,,Unity的协程会在每帧结束之后去检测yield的条件是否满足,满足则执行yield return之后的代码。 在一个MonoBehaviour提供的主线程里只能有一个处于运行状态的协程,而其他协程处于休眠状态。协程实际上是在一个线程中,只不过每个协程对CUP进行分时,协程可以访问和使用unity的所有方法和component。 (1)协程的定义: IEnumrator 函数名(形参表) //最多只能有一个形参 { yield return xxx; } (2)关于协程的开启和停止这里就不再赘述了,网上很多资料。 (3)关于协程的中断指令,即 yield return 后面的指令 yield break; 停止协程 yield return www; 等待一个WWW加载完成 yield return 0/null/数字; 暂停一帧,一般使用null yield return new WaitForSeconds(时间);

[UnityShader入门精要读书笔记]24.渲染纹理

人盡茶涼 提交于 2019-12-24 00:51:31
Unity为渲染目标纹理定义了一种专门的纹理类型——渲染纹理(Render Texture)。在Unity中使用渲染纹理通常有两种方式:一种方式是Project目录下创建一个渲染纹理,然后把某个摄像机的渲染目标设置成该渲染纹理,这样一来该摄像机的渲染结果就会实时更新到渲染纹理中,而不会显示在屏幕上。使用这种方法,我们还可以选择渲染纹理的分辨率、滤波模式等纹理属性。另一种方式是在屏幕后处理是使用GrabPass命令或OnRenderImage函数来获取当前屏幕图像,Unity会把这个屏幕图像放到一张和屏幕分辨率等同的渲染纹理中。 镜子效果 玻璃效果 渲染纹理和GrabPass的不同: 渲染效率上,渲染纹理要好于GrabPass,尤其是移动设备。使用渲染纹理我们可以自定义渲染纹理的大小,尽管这种方法需要把部分场景再次渲染一遍,但我们可以通过调整摄像机的渲染层来减少二次渲染时的场景大小,或使用其他方法来控制摄像机是否需要开启。而使用GrabPass获取到的图像分辨率和显示屏幕是一致的,这意味着在一些高分辨率的设备上可能造成严重的带宽影响。而且在移动设备上,GrabPass虽然不会重新渲染场景,但它往往需要CPU直接读取后备缓冲中的数据,破坏了CPU和GPU之间的并行性,这是比较耗时的,甚至在一些移动设备上是不支持的。 在Unity5中,Unity引入了命令缓冲(Command

Unity Profiler 性能分析

假如想象 提交于 2019-12-23 17:52:10
Profiler窗口 1. CPU A. WaitForTargetFPS: Vsync(垂直同步)功能所,即显示当前帧的CPU等待时间 B. Overhead: Profiler总体时间-所有单项的记录时间总和。用于记录尚不明确的时间消耗,以帮助进一步完善Profiler的统计。 C. Physics.Simulate: 当前帧物理模拟的CPU占用时间。 D. Camera.Render: 相机渲染准备工作的CPU占用量 E. RenderTexture.SetActive: 设置RenderTexture操作. 底层实现:1.比对当前帧与前一帧的ColorSurface和DepthSurface. 2.如果这两个Buffer一致则不生成新的RT,否则则生成新的RT,并设置与之相对应的Viewport和空间转换矩阵. F. Monobehaviour.OnMouse_ : 用于检测鼠标的输入消息接收和反馈,主要包括:SendMouseEvents和DoSendMouseEvents。(只要Edtor开起来,这个就会存在) G. HandleUtility.SetViewInfo: 仅用于Editor中,作用是将GUI和Editor中的显示看起来与发布版本的显示一致。 H. GUI.Repaint: GUI的重绘(说明在有使用原生的OnGUI) I. Event.Internal

Unity 1.2使用初探(1)

≯℡__Kan透↙ 提交于 2019-12-23 13:45:08
Unity 1.2使用初探(1) 最近赋闲在家,突然想看一点东西。 以前都有用Enterprise Library,对于PolicyInject可使项目辅助功Log,Auth等以更优雅的方式,叹其巧妙。现在微软出了Unity1.2注入容器,但是我在使用这个框架上还是个新手,所以在此学习如何应用。(下载地址: http://www.codeplex.com/unity ) 下面是我的一些初步使用,主要参照在 UnityDocs,路过的各位高手哪位有比较完好的中午资料,请是否可共享一下~~; 1,第一个Demo; 以下是一个Demo:首先定义1个接口,1个实现: public interface ILogService { void Write( string message); } public class CnsLogService : ILogService { #region ILogService 成员 public void Write( string message) { Console .WriteLine( String .Format( "Cns-exception msg:{0}" , message)); } #endregion } 然后我们可以这样应用Unity: public static void Main( string [] args) {