unity

Unity3d开发中遇到的问题记录

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-01 07:43:51
安装Unity unity官方提供免费的community版本,功能健全,下载时还有Visual Studio,非常方便。 官方文档 Unity的官方文档非常权威!详尽!可靠!很多关于函数细节的疑惑都可直接查阅文档解决! https://docs.unity3d.com/ScriptReference/index.html 实际遇到的细节 1. 旋转物体指向某目标 综合尝试过后,最简单的方法是使用transform.LookAt()看向目标物体,但需注意,不同物体的高度(y轴值)可能不同,但通常我们旋转物体只是想要获得水平方向的转动(也即y值不变)。所以最好新构建一个三维向量,拥有目标物体的x和z值,但拥有自身的y值(也就是说,构建一个虚拟目标):new Vector3(target.transform.position.x, this.transform.position.y, target.transform.position.z) 2.寻找附近物体 这方法有人说性能很低,但实现起来相对简单,没有测试过大量目标的场景。 使用 Physics.OverlapSphere()方法获取附近一定范围的碰撞器,可以使用一个collider的数组来获取结果。如果要获得最近物体,可对数组内物体距离进行排序。这有可能导致性能下降。但笔者暂未找到更好的方法。 持续更新 来源: https:/

UnityShader 语义、内置文件、变量

梦想的初衷 提交于 2019-12-01 07:25:36
内置文件 cgnic name Describe UnityCG.cginc ,包含了最常用变量、帮助函数、宏、结构体 Lighting.cginc 各种内置的光照模型,表面着色器会自动包含该文件 HLSLSupport.cginc 声明了许多用于跨平台编译的宏和定义 UnityGlobalIllumination.cginc 全局光照 内置常用结构体 struct name include variables appdata_base 顶点位置、顶点法线、第一组纹理坐标 appdata_tan 顶点位置、顶点切线、顶点法线、第一组纹理坐标 appdata_full 顶点位置、顶带你切线、顶点法线、四组纹理坐标 appdata_img 顶点位置、第一组纹理坐标 v2f_img (用于顶点着色器输出),裁剪空间位置、纹理坐标 内置变换矩阵 matraix name Describe UNITY_MATRIX_MVP 当前的模型·观察·投影矩阵,用于将顶点方向矢量从模型空间变换到裁剪空间 UNITY_MATRIX_MV 当前的模型·观察矩阵,用于将顶点方向矢量从模型空间变换到裁剪空间 UNITY_MATRIX_V 当前的观察矩阵,用于将顶点方向矢量从世界空间变换到观察空间 UNITY_MATRIX_P 当前的投影矩阵,用于将顶点方向矢量从观察空间变换到世界空间 UNITY_MATRIX

Unity---游戏设计模式(2)之外观模式

China☆狼群 提交于 2019-12-01 06:11:15
目录 1、外观模式原型 2、外观模式实例 概述参考请看 参考博客 外观模式通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。 1、外观模式原型 外观模式原型的UML图 外观模式代码 public class SubSystem1 { public void Method1() { //业务系统代码 } } public class SubSystem2 { public void Method2() { //业务系统代码 } } public class SubSystem3 { public void Method3() { //业务系统代码 } } /// <summary> /// 外观模式原型代码 /// </summary> public class FacadeMode { public SubSystem1 system1 = new SubSystem1(); public SubSystem2 system2 = new SubSystem2(); public SubSystem3 system3 = new SubSystem3(); public void Work() { system1.Method1(); system2.Method2(); system3

Unity中调用Windows窗口句柄以及根据需求对其设置

为君一笑 提交于 2019-12-01 04:35:36
问题背景: 现在在搞PC端应用开发,我们开发中需要调用系统的窗口以及需要最大化最小化,缩放窗口拖拽窗口,以及设置窗口位置,去边框等功能 解决根据: 使用user32.dll解决 具体功能: Unity中对Windows窗口设置 <1>.unity中调用打开文件窗口和保存窗口: 调用Comdlg32.dll中方法 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Runtime.InteropServices; 5 using System.Text; 6 using System.Threading.Tasks; 7 8 namespace Tx3d.Ventilation 9 { 10 /// <summary> 11 /// 场景窗口类型基类 12 /// </summary> 13 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] 14 public class SceneWindows 15 { 16 public int structSize = 0; 17 public IntPtr dlgOwner = IntPtr.Zero; 18 public IntPtr

unity timeline

一曲冷凌霜 提交于 2019-12-01 02:36:40
试用了下确实不错 Activition控制显示 Animation控制 监视面板 上的所有数据作为动画帧参数播放,需要对目标物体挂在一个空的Animator,比如控制坐标,脚本的public 参数等 Audio 声音 Control 未知 Playable 脚本 脚本的使用教程 封装的: https://blog.csdn.net/linxinfa/article/details/79557744 介绍: https://blog.csdn.net/qq_40483552/article/details/80712741 https://blog.csdn.net/ILYPL/article/details/78048593 https://blog.csdn.net/q568360447/article/details/80356316 来源: https://www.cnblogs.com/sanyejun/p/11648569.html

Unity3D内存释放

不羁的心 提交于 2019-11-30 21:12:26
最近网友通过网站搜索 Unity3D 在手机及其他平台下占用内存太大. 这里写下关于 unity3d 对于内存的管理与优化. Unity3D 里有两种动态加载机制:一个是Resources.Load,另外一个通过AssetBundle,其实两者区别不大。 Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件需要你自己创建,运行时 动态加载,可以指定路径和来源的。 其实场景里所有静态的对象也有这么一个加载过程,只是Unity3D后台替你自动完成了。 详细说一下细节概念: AssetBundle运行时加载: 来自文件就用CreateFromFile(注意这种方法只能用于standalone程序)这是最快的加载方法 也可以来自Memory,用CreateFromMemory(byte[]),这个byte[]可以来自文件读取的缓冲,www的下载或者其他可能的方式。 其实WWW的assetBundle就是内部数据读取完后自动创建了一个assetBundle而已 Create完以后,等于把硬盘或者网络的一个文件读到内存一个区域,这时候只是个AssetBundle内存镜像数据块,还没有Assets的概念。 Assets加载: 用AssetBundle.Load(同Resources.Load)

Unity血条跟随效果

馋奶兔 提交于 2019-11-30 20:50:28
1、OGUI实现血条跟随 public Camera mainCam; public Transform inPoint; private float hSliderValue; private void OnGUI() { //将世界坐标换成屏幕坐标 Vector3 temp = mainCam.WorldToScreenPoint(inPoint.position); GUI.color = Color.red; //GUI.Label(new Rect(temp.x, Screen.height-temp.y, 100, 20), "唐三"); hSliderValue = GUI.HorizontalSlider(new Rect(temp.x,Screen.height- temp.y, 100, 30), hSliderValue, 0.0f, 10.0f); } 2、NGUI实现血条跟随(添加HUD插件) 实现加血减血显示 public HUDText hud; public float speed; void Update() { float h = Input.GetAxis("Horizontal"); float v = Input.GetAxis("Vertical"); transform.position += new Vector3(h * Time

unity shader 波动圈

笑着哭i 提交于 2019-11-30 19:13:10
c# //////////////////////////////////////////// // CameraFilterPack - by VETASOFT 2018 ///// //////////////////////////////////////////// using UnityEngine; using System.Collections; [ExecuteInEditMode] [AddComponentMenu ("Camera Filter Pack/Distortion/ShockWave Manual")] public class CameraFilterPack_Distortion_ShockWaveManual : MonoBehaviour { #region Variables public Shader SCShader; private float TimeX = 1.0f; private Material SCMaterial; [Range(-1.5f, 1.5f)] public float PosX = 0.5f; [Range(-1.5f, 1.5f)] public float PosY = 0.5f; [Range(-0.1f, 2f)] public float Value = 0.5f; [Range(0f,