UNITY - 技术教程文章

Unity3D

一、安装配置1、下载页面:http://unity3d.com/get-unity分个人版本和专业版,个人版免费,但少了很多功能(主要是渲染相关,具体请看官方说明), 专业版是每月 75$ 或一次性1500$。下载下来的其实是一个下载器,然后双击该下载器再进行下载安装,提示有5G大小,要等很久,暂时没发现有离线安装包可以下载。 原文:http://www.cnblogs.com/tianyajuanke/p/4323523.html

unity文件写入与读取【代码】

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; using UnityEngine.SceneManagement; using System; using System.IO; using System.Runtime.InteropServices;publicclass GridEditor : EditorWindow {publicstaticstring _gridPath = "Assets/Scence/Data/Grid/";publicstaticfloat _perGridSize = 0.5f;publicstaticfloat _gridX = 256;publicstaticfloat _gridZ = 256;pu...

Unity 切换场景的注意点【代码】【图】

Unity3D 中切换场景的函数如下注意点:把要转换的场景放到编译目标(左上角 File - Bulid Settings; 将把需要的场景打上勾)选取目标有两种参数 数字:直接把上图的数字填入即可,比较方便,但是不直观字符串:可以填场景的名称,也可以填路径上图案例:// 直接数字 SceneManager.LoadScene(0); // 场景名称 SceneManager.LoadScene("SampleScene"); // 路径 SceneManager.LoadScene("UI/Scenes/SampleScene"); 路径不要这样写:S...

Unity 基于Cinemachine计算透视摄像机在地图中的移动范围【代码】【图】

Unity中Cinemachine的基础功能介绍可详见之前写的博客:https://www.cnblogs.com/koshio0219/p/11820654.html本篇的重点是讨论,在给定规则地图的长宽和中心点坐标的情况下,如何动态生成一个透视摄像机的碰撞盒子以限定摄像机的视野永远不会超出地图的边界。例如,下面这种规则地图:(或者其他用程序生成的单位块地图) 在输入一些参数后: 可以自动创建形如:这样的摄像机运动范围,且输出的范围能够适配到屏幕的分辨率,考虑到...

Unity之机器人AI【代码】

接着上篇简单机器人AI的那个,下午搜了下相关的看到“Unity3D研究院之游戏开发中的人工智能AI(三十八)”,便仔细尝试按照他的思路着写了并测试了,效果杠杠的我就贴自已写的一遍的代码了,作为一个小小小笔记吧!!! 1using UnityEngine;2using System.Collections;3 4///<summary> 5/// 类型6///</summary> 7publicenum RobotAIType8{9 Gremlins,10 Monster,11 Boss,12}13 14///<summary> 15/// 状态16///</summa...

Unity4.3 Sprite Packer用法介绍【图】

我们用来做sprite 的图片,通常会留有很多空白的地方,我们在画完了sprite之后,这些地方很可能就没有什么作用了。如果想避免这些资源上的浪费,我们可以把各个sprite做成图集,把图片上的空间尽量利用得充实一点。这时候,我们就需要一个制作图集的工具。 其实这个功能要自己写也不难的,只是把各个sprite上的图片做copy pixel处理,然后计算一个矩形范围,把所有拾取的图片像素按一定的规律放在一张图片上面。不过这些较为底层...

UnityMathf类

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 { ...

Unity中OnTriggerEnter条件以及isTrigger的一个问题

该函数触发的条件:1、两个物体都必须有碰撞器(Collider)组件;2、其中一个物体的碰撞器(Collider)的IsTrigger属性必须勾上;3、最重要的一点,其中一个物体必须有刚体(Rigidbody)组件。如果是一个运动的物体(如子弹)去碰撞一个静止的物体,则刚体(Rigidbody)组件必须加在运动的物体上,否则无法触发OnOnTriggerEnter函数。所以这时候子弹身上就要加一个Rigidboyd而不是character controllerBug描述:游戏主角在静止状态...

Unity2019.1中文技术手册离线版【图】

使用离线版优质、系统化的教程、经验文档、参考手册,为开发者节省时间,提高效率!解压后打开UnityDocumentation_2019.1/Manual/index.html 需要的自取,下载地址:https://pan.baidu.com/s/15rcBvr6JvM-wVYzGtSstdg原文:https://www.cnblogs.com/jiahuafu/p/11916887.html

蓝鸥Unity开发基础—— 实践课程源代码二【图】

蓝鸥Unity开发基础—— 实践课程源代码二650) this.width=650;" src="/upload/getfiles/default/2022/11/8/20221108070820200.jpg" title="【蓝鸥Unity开发基础】19.实践课Demo4590.png" />using System;namespace MyFirstGame{ class MainClass { public static void Main (string[] args) { //游戏即将启动时做一些操作 const int mapW=46;//地图宽度 const int mapH = 16...

【u3d开发】Unity3d AudioSource如何监听播放完成并处理逻辑【图】

想知道AudioSource什么时候播放完成并处理相关的逻辑,比如切换曲目,而unity又没有提供相应的事件,于是想到下面几种方案:1、Update时时判断isPlaying2、获取音频的播放长度,Invoke一下后来查看api的时候突然想到,可以用协程啊。原理和Invoke一样,这应该是最好的方案了。不过如果音频暂停掉了之后而又没有更新协程函数的话,问题就出现了。所以暂停的时候记得更新协程函数。原文:http://blog.csdn.net/egostudio/article/det...

【Unity】4.7 摄像机【图】

分类:Unity、C#、VS2015 创建日期:2016-04-11 一、简介摄像机(Camera)是为玩家捕捉并展示世界的一种设备。场景中至少需要有一台摄像机,也可以在一个场景中使用多台摄像机。这些摄像机可以设置为在屏幕的任何位置或只在某些部分按任何顺序进行渲染。 要将游戏呈现给玩家,相机是必不可少的。可以对相机进行自定义、脚本化或父子化,从而实现可以想到的任何效果。在拼图游戏中,可以让相机 (Camera) 处于静止状态,以看到拼图的全...

unity增加对IPv6的支持

本文转自:http://blog.csdn.net/huutu/article/details/52155885  其实ipv4与ipv6之间的区别在建立socket时就有不同:  ipv4的socket:socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);  ipv6的socket:socket = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp);   然后我们在建立socket的时候要判断用户的当前网络类型是ipv4还是ipv6。   这里...

【小松教你手游开发】【unity实用技能】unity ios快捷打包【代码】

ios打包是比较麻烦的,配通一次流程后需要做个笔记把各种插件各种配置在每次打包的时候重新配置,作为一个程序员当然不能接受这么笨的事情,写个脚本让代码去实现这些。 首先,介绍一个标记[PostProcessBuild]在函数前写上这个标记,unity在打完包后便会调用这个函数。所以我们也将用这个标记让unity在包打成xcode项目以后,去改动xcode里面的配置。而unity也有一个默认的函数给我们使用static void OnPostprocessBuild(BuildTarge...

Unity优化方向——优化Unity游戏中的垃圾回收【代码】

介绍当我们的游戏运行时,它使用内存来存储数据。当不再需要该数据时,存储该数据的内存将被释放,以便可以重用。垃圾是用来存储数据但不再使用的内存的术语。垃圾回收是该内存再次可用以进行重用的进程的名称。Unity使用垃圾回收作为管理内存的一部分。如果垃圾回收发生得太频繁或者有太多工作要做,我们的游戏可能会表现不佳,这意味着垃圾回收是导致性能问题的常见原因。在本文中,我们将了解垃圾回收如何工作的,什么时候发生垃...

unity3d: how to display the obj behind the wall【代码】

透墙显示,遮挡显示,使用ztest Tags { "Queue"="Overlay+1""RenderType"="Transparent"}Pass{// 透视效果,关闭cull Cull Off// 不记录深度值 ZWrite Off// 被遮挡的也渲染出来,也可以使用always ZTest GreaterLighting Off // 设置混合,效果更好Blend One OneFog {Mode off}Color [_Color]SetTexture [_MainTex] { combine texture * primary, texture }} 原文:http://www.cnblogs.com/lightlfya...

unity 获取本地ip地址【代码】

1using System.Collections;2using System.Collections.Generic;3using System.Net.NetworkInformation;4using System.Net.Sockets;5using UnityEngine;6 7publicclass Ip 8{9publicenum ADDRESSFAM 10 { 11 IPv4, IPv6 12 } 13///<summary>14/// 获取本机IP 15///</summary>16///<param name="Addfam">要获取的IP类型</param>17///<returns></returns>18publicstaticstring GetIP(ADDRESSFAM Addfam) 19 { 20if (...

Unity实用技巧

1. 在场景窗口鼠标右键和方向键移动的时候,同时按下shift键,那么移动会加速2. 在Scene视图下按下数字键2可以切换2D,3D视图3. 在Inspectore视图下,菜单中选择Debug即可在检视面板查看脚本的私有变量4. 在搜索窗口使用"t:xx"可以针对类型搜索,代码中对此语法一样有效5. 在Hirachy视图中,按住Alt键同时鼠标点击三角或者同时 按下方向键右键或者左键,就可以展开或收起该对象所有的子节点6.在Scene视图中,当你按住 Ctrl/Cmd 键的...

unity shader 学习 (2)Vs【顶点着色器】 和 Ps【像素着色器】

上一章我写了渲染管线,中间提到了shader的作用,我们的大shader同学主要就是负责被CPU指派到GPU中做一些如顶点转换,关照模型,光栅化等操作的。大shader有两种类型,他们分别是Vs【顶点着色器】 和 Ps【像素着色器】..他们可以同时存在,也可以分开存在,没有任何使用限制。当时如果同时存在的话,必须Vs执行完成后再交给Ps处理。他们两个家伙是配合固定流程管线而存在的。原文:http://www.cnblogs.com/iceyll/p/4923958.html

unity3D总结的一些细节,不注意有些要折腾非常多天!

1. 注意!!ps保存图片时,若保存为ps格式,若关闭最大兼容将会导致unity导入失败!(n天)2.switch 推断NGUI popuplist传来的value字符串时一定要trim一下去掉空格!3. 获取子物体时,方法不同得到的结果不同!foreach(Transform tr in transform) 返回的是下一级子物体,通俗点就是“儿子”。Transform [] allModel = GetComponentsInChildren<Transform>(); 返回的是全部层级子物体,包含儿子、孙子、重孙...4.注意resourc...

Unity中利用委托与监听解耦合的思路【代码】【图】

这篇随笔是一篇记录性的随笔,记录了从http://www.sikiedu.com/my/course/304,这门课程中学到的内容,附带了一些自己的思考。一.单例模式的应用首先假想一种情况,现在需要有一个按钮和一个Text,当按下按钮时,Text上显示“你好”两个字。一个最常见的方法是在按钮下挂载一个脚本BtnClick,它持有一个Text组件,它由外部的Text拖入来赋值。在初始化时BtnClick会获取当前游戏物体下的Button组件并为其添加监听,当按下按钮时会修改...

随笔——判断Unity3D的运行平台【代码】【图】

今天研究了一下Unity3D的运行平台,在这里做个笔记,免得以后又忘了! 1.新建项目 2.新建Scripts和Scenes文件夹,用来存放脚本和场景 3.添加Text,显示输出信息 4.新建GameController脚本 5.运行游戏,查看结果 6.其他 开始吧! 1.新建项目  新建一个项目,名字叫DeltaTimeTest吧,因为我今天顺便要测试一下DeltaTime函数。完成后的界面见下图: 2.新建Scripts和Scenes文件夹,用来存放脚本和场景  到项目浏...

TSSAO Temporal Screen-Space Ambient Occlusion (Unity3d 5 示例实现)【图】

前提环境光(ambient occlusion)是一种GI,其简化形式SSAO可以用“微量高效”来形容,消耗得很少,得到的效果很好。环 境光遮蔽(ambient occlusion)的本质是计算在一个点的半球面范围内有多少方向被阻塞(如下图1.2.1),然后根据它调整表面颜色。如果实时渲染使用的话非常消 耗,所以在游戏中一般都使用(screen-space ambient occlusion)SSAO。SSAO使用depth buffer来近似一个离散的场景(如下图1.2.2),从而获得固定的开...

Unity3D 事件

unity3d事件函数整理,事件,回调函数,消息处理 Unity3D中所有控制脚本的基类MonoBehaviour有一些虚函数用于绘制中事件的回调,也可以直接理解为事件函数,例如大家都很清楚的Start,Update等函数,以下做个总结。Awake当前控制脚本实例被装载的时候调用。一般用于初始化整个实例使用。Start当前控制脚本第一次执行Update之前调用。Update每帧都执行一次。这是最常用的事件函数。FixedUpdate 每固定帧绘制时执行一次,和update不同...

Unity Emoji表情系统【图】

2021-4-3 发布1.1.0版本 增加了 超链接、视屏、按钮混排该解决方案的由来是由于公司的需求,且该需求比较特殊,需求就是要显示手机上的所有表情和颜文字以及自定义表情,效果向Andoid和IOS开发看齐,我透,这个可有点难度了,显示自定义表情还好说,但是你让我显示手机上的所有表情,以及颜文字混排,和多个国家语言混排。你这不是裤衩子太紧非要劈叉,这不纯属扯Dan嘛。这里我真的忍不住要吐槽一下了,我星星你个大猩猩,人家是原...

《Unity_API解析》 第二章(上) Camera类实例属性【图】

aspect属性:设置摄像机视口比例public float aspect{ get ; set; }功能说明:此属性用于获取或设置Camera视口的宽高比例值。 cameraToWorldMatrix属性:变换矩阵public Matrix4x4 cameraToWorldMatrix{ get; }功能说明:此属性的功能是返回从摄像机的局部坐标系到世界坐标系的变化矩阵。Camera中的forward方向为其自身坐标系的-z轴方向,一般其他对象的forward方向为自身坐标系的z轴方向。通过这个属性,可以获得一个4x4矩阵,当相...

unity 多点触控(放大,缩小)

//用于绑定参照物对象 var target : Transform; //缩放系数 var distance = 10.0; //左右滑动移动速度 var xSpeed = 250.0; var ySpeed = 120.0; //缩放限制系数 var yMinLimit = -20; var yMaxLimit = 80; //摄像头的位置 var x = 0.0; var y = 0.0; //记录上一次手机触摸位置判断用户是在左放大还是缩小手势 private var oldPosition1 : Vector2; private var oldPosition2 : Vector2; //初始化游...

Unity3D项目实战笔记(5):延时功能的几种实现

我所做过的系统,分单机版系统(2005年)、CS系统(2010年)、实时系统(2015年),各个系统均有“延时”功能:定时调度的; 本博客说的是实时系统中的延时功能(基于Unity3D游戏引擎)。 在Unity3D中,新建的脚本会默认继承MonoBehaviour,其中Update函数会被引擎自动调度,如在我的电脑上,Update函数被调用的周期为0.012s。那么Unity3D中,仅有通过Update函数来实现延时功能吗? 还有无其他的实现呢?怎么才能让一个界面只显示...

【ASP.Net MVC3 】使用Unity 实现依赖注入【代码】【图】

什么是Unity?Unity是一个轻量级的可扩展的依赖注入容器,支持构造函数,属性和方法调用注入。Unity可以处理那些从事基于组件的软件工程的开发人员所面对的问题。构建一个成功应用程序的关键是实现非常松散的耦合设计。松散耦合的应用程序更灵活,更易于维护。这样的程序也更容易在开发期间进行测试。你可以模拟对象,具有较强的具体依赖关系的垫片(轻量级模拟实现),如数据库连接,网络连接,ERP连接,和丰富的用户界面组件。例...

Unity相机跟随小结【代码】【图】

做游戏的时候相机是我们的直接感官,相机的跟随方式严重关系到游戏的体验。我们最常用的跟随方式是transform.position = Vector3.Lerp(transform.position, GetTargetPos(player), deltaTime * speed); transform.rotation = Quaternion.Lerp(transform.rotation, GetTargetRotation(player), deltaTime * rSpeed);需要注意的是上面deltaTtime,需要根据目标物体的运动更新方式设置相应的值。如果目标物体的运动是物理速度或...