UNITY - 技术教程文章

unity 基本知识(一)

1.unity Editor中默认情况红色是x轴,控制左右;绿色是y轴,控制上下。蓝色是z轴,控制前后。在世界坐标系的情况下,移动的是单轴向的坐标,代码中使用position就可以访问。在本地坐标系的情况下,如果物体有旋转,则移动的是双向的坐标,代码可以用localpostion访问。2.修改编辑器的设置Edit - Preference - External Script Editor原文:https://www.cnblogs.com/gamefan/p/10992842.html

Unity3d Gis 坐标转换

近期在做unity3d与Gis结合的项目,最主要的就是坐标的转换问题。比方把经纬度为(166.23.9.27 。 39.55.15.74) 转换到unity里面成相应的位置点。废话不多说 上代码:using UnityEngine; using System.Collections;public class SaiGetLatLog : MonoBehaviour {public Transform firstPoint; //Unity中左上点public Transform secondPoint;//Unity中右下点public SaiEarth firstSai;//地图中相应的左上经纬度点public SaiEarth sec...

unity3d log管理【代码】

unity3d的log管理,主要区分log的重要程度,有时候习惯在项目开发过程中随意打log,到后期出现log比较多且混乱的情况,在真机上调试的时候也会很不方便。这里记录下最近写的一个Log管理类,还有很大的优化空间,以后有时间在详细弄下。publicenum LogLevel //Log等级{Everything,Normal,Important,Emergy}publicenum LogColor //Log颜色{White,Red,Yellow,Blue,Green,Purple,Orange}publicstaticclass Log{publicstatic Dictionar...

【SIKIA计划】_07_Unity3D游戏开发-坦克大战笔记

【新增分类】【AudioClips】音频剪辑【AudioMixers】音频混合器【Editor】【Fonts】字体【Materials】材质【Models】模型【Standard Assets】【渲染调整】Windows——Lighting ————Scene——————Ambient Color 颜色偏向——————Auto 自动渲染Camera——projection{Orthographic}正交视野【键盘控制】FixedUpdate 固定帧//物理位移一般放在这float v = Input.GetAxis("Vertical");//单人控制(WSAD与上下左右同时有效)...

VS2017做为Unity3D的脚本编辑器需要的最精简组件【代码】【图】

前言使用VS2017做为Unity的脚本编辑器,需要的最精简组件。 我的测试环境windows 10 x64 windows 7 x64 sp1时间:2017-4-22 最精简的组件只需要三个必需组件,这些组件都是可选安装位置C#和Visual Basic Roslyn编译器 静态分析工具 Visual Studio Tools For Unity(我是从vs的插件库中下载的) 在线安装1、从官网下载对应的版本,文件格式如下:vs_enterprise__2144843982.1466598399.exe2、双击下载文件,接受协议,选择需要的组...

关于unity3D异步加载进度条实时更新的方法【代码】

在其他地方看到所谓的实时更新就是 让slider的当前value等于异步对象的进度值而已,太坑了,这个正常来理解的意思不就是从0开始递增到100嘛,不管怎么我已经完成这个功能了,代码贴上,以免日后忘记, 找到这篇博客的朋友算你好运,直接搬走吧(NGUI版)~ 需要重点提醒的:异步对象AsyncOperation的值到90%后不会再增长,剩下的10%要让AsyncOperation.allowSceneActivation(意思是场景加载完毕后自动跳转场景)为true时才会自动完...

Unity Shader 之 基础光照【代码】【图】

摄像机是如何看这个世界的  游戏中摄像机所看到的世界与我们现实中所看到的几乎是一样的。首先,光线从光源中发射出来。然后,光线和场景中的一些物体相交(散射,吸收)。最后,摄像机吸收了一些光,产生一张图像。  光线与物体相交的结果有两个:散射(scattering)和吸收(absorption)散射:只改变光线的方向,但不改变光线的密度和颜色,有两种方向:内部与外部,对应折射与反射。 折射(refraction):散射到物体内部,用...

【Unity与23种设计模式】迭代器模式(Iterator)

GoF中定义:“在不知道集合内部细节的情况下,提供一个按序方法存取一个对象集合体的每一个单元。” 迭代器模式由于经常使用到已经被现代程序设计语言纳为标准语句或收录到标准函数库中 在C#中,经常使用泛型存储对象当想按序存取这些泛型容器时,都会使用C#的foreach语句 foreach语句就是一个能顺序访问一个集合的方法它便是C#语言内置的迭代器模式当然其他现代语言也提供了类似的语句原文:http://www.cnblogs.com/fws94/p/74828...

unity 热更新 c# 实战经验分享(一)

demo 工程地址 :http://pan.baidu.com/s/1qWBYxqc我们接上篇 内容继续讲 http://www.cnblogs.com/zyc-it/p/4820810.html(1)工程分离什么叫工程分离呢,就是要把你的游戏包(后面简称 #主工程#),和你的热更新工程(后面简称 #热更新工程#) 分离开。首先我先说一下 ,我为什么要这么做:原因:从github 上更新下来的 jsb的工程,把所有的热更新代码写在了unity 里面了,然后在 热更新工程里面 去引用这些cs 文件。在我看来 不是...

Unity-动态显示窗口制作思路【代码】

此教程来自siki学院的<<暗黑战神>>课程 这次需要记录的是动态显示窗口的制作方式,它的效果是弹出一条游戏Tips,上面可以显示你想显示的内容,随后消失。显然,我们只需要制作一个动画,动画中改变Text组件的位置即可实现此效果。然而现在的问题是,不能让这个动画立刻播放,我们需要在特定的时候去播放它,并在特定的时刻停止。 那么怎么实现呢?我们可以在控制动态显示窗口的脚本中,设置一个方法,当要显示动态Tips时,设置改变...

unity基础开发----unity游戏速度更快的简易检查表

让游戏速度更快的简易检查表保持顶点数在 200K 下面,针对 PC 时每帧应为 3M,主要取决于目标 GPU。若使用内置着色器,请在移动 (Mobile) 或未点亮 (Unlit) 的类别中选择。它们对非移动平台相同有效,可是是更复杂的着色器的简化和限制版本号。每一个场景中不同材质的数量尽可能少 — 不同对象之间尽可能共享相同的材质。在非移动对象上设置静态 (Static) 属性,同意静态批处理 (static batching) 等内部优化。切勿在不必要的情况下...

unity 3D在调用JsonFx遇到的问题及解决【图】

在unity中传递数据是,Json使用时非常广泛的。在学习使用Json中遇到了一个小问题,但是这个问题却不容易被发现,所以我把这个问题列出来希望帮助其他初学者。问题描述:JsonTypeCoercionException: Only objects with default constructors can be deserialized. (People)JsonFx.Json.TypeCoercionUtility.InstantiateObject (System.Type objectType, System.Collections.Generic.Dictionary`2& memberMap)JsonFx.Json.JsonReader...

unity渲染性能优化

cpu bound还是gpu boundcpu bound:渲染task可能分布在多个线程,叫做多线程渲染。主线程、渲染线程、worker线程。主线程包含一些渲染的任务。渲染线程发送命令给gpu。worker线程执行一些单独的任务,裁剪、mesh skin等。但不同目标也可能不同。哪个task是瓶颈就优化那个task在的线程。某些平台不支持多线程渲染。graphics job: player setting里的graphics job决定unity用worker线程展开渲染任务。(1)发送命令到gpu:一般是在渲...

Unity 3D学习之 Prime31 Game Center插件用法

http://momowing.diandian.com/post/2012-11-08/40041806328 It‘s my life~:为app 连入Game Center 功能而困扰的朋友们,不妨试一试Prime31 Game Center插件吧。简单,有效,快捷!!1.导入Prime31 Game Center插件之后。会有一个GameCenterTestScene 里面有14个GUI按钮代码在GameCenterGUIManager中。在这先不一一介绍。2.首先在Editor 文件里面 还有一些Object_c写的头文件和m文件。这些脚本需要添加到unity buid成的xcode文件 ...

unity3d 右键快速打开文件【代码】

在开发中如果只是想快速查看某个(如.lua)文件的话,可以活用右键功能,这个在打开多个工程并调试的情况下略显高效。如图:写了一个工具类,并添加了两个方法:可选用notepad++或记事本快速打开文件。代码如下:using UnityEngine; using System.Collections; using UnityEditor; using thisObject = UnityEngine.Object; using System.Threading; using System;public class EasyTool { const int OpenMax = 10; //一次打开文...

Unity内存优化

对项目优化有很多,如:mesh合并,减少DrawCall和模型骨骼以及物理计算,合并材质球,优化代码等等。优化: 1. 更新不透明贴图的压缩格式为ETC 4bit,因为android市场的手机中的GPU有多种,每家的GPU支持不同的压缩格式,但他们都兼容ETC格式。 2.对于透明贴图,我们只能选择RGBA 16bit 或者RGBA 32bit。 3.减少FPS在ProjectSetting-> Quality中的VSync Count 参数会影响你的FPS,EveryVBlank相当于FPS=60,EverySecond...

漫话Unity3D(三)

八、预制(Prefab) 这个单独提出来,是因为它太常用了。也是Unity 的核心要素之一。原本Unity中的一个物体是你拖拽一个模型到场景中,或者创建一个几何体,或者灯光地形等,然后设置这个物体的偏移、旋转和缩放。然后绑定好脚本,设置好参数。如果想要第二个相同物体的话,复制一份。但是问题来了,如果有一个问题需要这n个物体都进行修改,那么就要操作n遍。这个时候预制就体现出威力了,你可以拖拽场景中的物体到下方的资...

通过反射调用Unity编辑器提供的各种功能【代码】【图】

Unity编辑器功能丰富易上手,其实编辑器提供的大多数菜单操作,在代码里面都是能够找到对应接口的,但是这些接口都没有对我们开放,怎么办?很简单,直接使用反射调用即可。首先使用Reflector或ILSpy将UnityEditor和UnityEngine进行反编译(有源码的可以直接查看源码更好),然后在里面找你需要的功能即可,unity的底层代码命名是非常规范的,多数功能都能直观的找到:  下图中是Hierarchy视图中一些操作函数,怎么样,是不是很直...

关于unity如何制作mmo【图】

昨天去看了下unity的成都openday,还是有很多收获的,之前我对于这类的活动始终提不起来兴趣,不过看来日后还是要多参加下类似的活动长长见识。  公司打算开发3d mmo手游,昨天好玩123恰好也分享了他们制作3d mmo优化的大概流程,当然只讲了模型和shader的优化,模型方面他们第一次始终了常规的方法,先建高模,中模,和低模,然后使用低模加高模导出的法线贴图,来达到一个不错的效果,不过他们并没有使用这种方法,主要因为建高...

(三)Unity5.0新特性------State Machine Behaviours【图】

出处:http://blog.csdn.net/u010019717author:孙广东 时间:2015.3.31 (State machine behaviours)状态机的行为在Animator Controller的脚本中是可以附加到动画状态或子状态机。每当你进入一种状态,就可以对其添加各种各样的状态依赖例如播放声音等行为,他们甚至可以独立于动画animation。而用于(logic state machines )逻辑状态机。要添加(State machine behaviours)状态机行为到状态或子状态机,请单击inspe...

unity3d摄像机【图】

主要来自unity3d reference,再加上一些自己的理解一 概述摄像头是用于将世界场景投影到屏幕的设备。可以在场景中放置不限数目的摄像机,它们可以设定成任意的渲染次序,渲染到屏幕上的任意地方。摄 像机实质上是用于将游戏显示给玩家看,它们可以被定制,在上面写脚本或者挂载到其他物体上面以获得想象中的各种效果。对于一个猜谜的游戏,可能只需对游戏 的全部视图保持摄像机静止即可。对于第一人称的射击游戏,常会将摄像机挂载...

unity3d5.2.3中 调整视角【图】

按住alt键不放,然后左边的手的图标会变成一个眼睛,在Scene中移动。就会发现可以调整视角了原文:http://www.cnblogs.com/chucklu/p/5013758.html

Unity3d 解析文本执行已注册的自定函数【代码】

最近有个需求是想让程序解析策划编辑一个文本生成一段CG,内容使用大致是这样cgSetCameraEx(118.6324,30.71189,75.55666,45,-45,0,0) cgCloneMyPlayer(1) cgSetPosDir(1,109,80,0) cgSetCameraEx(114.18,23.17,96.9,11.51974,-61.49661,-3.384705,3.5) cgCreateActor(2,25,108,100,90) cgWait(0.2) cgMove(1,109.7,100,9,false) cgWait(3) cgFaceToActor(1,2) cgWait(1.5) cgPopTalk(1,1,2) 我的做法是借助一个第三方库NCalc,把自...

Unity 中简单的第三人称摄像机跟随

先说较为简单的一种:一、将摄像机作为人物角色的子对象,设置好相对距离和偏移量即可,但这种方法弊端较多,一般不采用。二、 设置好摄像机跟物体的相对距离,之后利用插值让摄像机平滑跟随。原理:摄像机与player以向量(有大小,有方向)相连,这样就可以确定摄像机与player的相对距离了,这样人物走动,摄像机也会跟随移动。 将下列代码与camera绑定就可以实现第三人称摄像机跟随。代码:public class CameraFollow : MonoBeha...

Unity3D文件读取

Resources:是作为一个Unity3D的保留文件夹出现的,也就是如果你新建的文件夹的名字叫Resources,那么里面的内容在打包时都会被无条件的打到发布包中。它的特点简单总结一下就是:只读,即不能动态修改。所以想要动态更新的资源不要放在这里。会将文件夹内的资源打包集成到.asset文件里面。因此建议可以放一些Prefab,因为Prefab在打包时会自动过滤掉不需要的资源,有利于减小资源包的大小。主线程加载。资源读取使用Resources.Loa...

Unity Shader 序列帧动画【代码】

shader中的序列帧动画属于纹理动画中的一种,主要原理是将给定的纹理进行等分,再根据时间的变化循环播放等分中的一部分。 Unity Shader 内置时间变量名称类型描述_Timefloat4(t/20,t,2t,3t) 其中t为自该场景加载所经过时间_SinTimefloat4(t/8,t/4,t/2,t) 其中t为自该场景加载所经过时间的正弦值_CosTimefloat4(t/8,t/4,t/2,t) 其中t为自该场景加载所经过时间的余弦值unity_DeltaTimefloat4(dt,1/dt,sdt,1/sdt) 其中dt为时间增...

Unity 图形学 基础知识总结

1. 渲染流水线 三大块:应用阶段,几何阶段,光栅化阶段 渲染图元 顶点信息 GPU流水线 顶点数据=> 顶点着色器;曲面细分着色器;几何着色器;裁剪;屏幕映射=> 三角形设置;三角形遍历;片元着色器;逐片元操作=> 屏幕图像 裁剪:可配置的,摄像机属性 逐片元操作:模板测试,深度测试,混合(不可编程,可以配置) 为了优化,Unity的Ztest是在片元着色器之前; 但是如果使用了clip(值为负数,丢...

unity trigger 获取触发点【代码】

2Dprivatevoid OnTriggerEnter2D(Collider2D other){if (other.gameObject.GetComponent<AttackBox>()){hitPos = other.bounds.ClosestPoint(transform.position);print("碰撞点" + hisPos);}} 3Dother.gameObject.GetComponent<Collider>().ClosestPointOnBounds(transform.position); 原文:https://www.cnblogs.com/sanyejun/p/12753488.html

Unity3d Asset Serialization 设置错误导致SVN文件不能同步【图】

在Unity3d 编辑器中创建一个 物体,然后保存为 Prefab 。上传到 SVN中,在团队协作中很正常的一个操作,但是因为Unity的配置问题,在另外的电脑上下载过来后,Prafab却被Unity修改。 转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn将SVN 上的Prefab 和本地的被Unity修改过的Prefab 进行比较。我们正常的prefab 应该是以右边文本形式存在的,但左边的却类似 二进制 存在。很可能是Unity 的编辑器设置有不同。点击 Ed...

Unity游戏开发——自动为动画剪辑添加事件 之 最后几帧的事件不能被调用的问题【代码】【图】

最近在做一个根据配置表自动生成动画剪辑clip以及controller的功能.做法是根据配置表配置的动作以及每个动作的关键帧,自动为每个clip添加事件.这样做可以把动画的事件处理在游戏运行之前就计算好然后存到动画文件.anim中,可以提高游戏的运行效率,如果做的再细点,还可以自定义动画事件的传入的参数.比如act游戏中的多段攻击,这些数据一定是配到表中的,我们可以把表中的数据导入成Unity的ScriptableObject类型,然后打成.asset文件,在...