unity

unity延迟加载图片

谁说我不能喝 提交于 2019-11-28 17:41:05
把加载图片所需要的信息封装成一个任务(自己写的类,包括路径,回调等信息),再将该任务添加到自己写的任务池中(在update中执行任务委托),由于只是添加任务操作,加载完成后自动调用回调函数实例化,对主要逻辑速度没有影响 来源: https://www.cnblogs.com/mcyushao/p/11416973.html

Unity的UGUI学习

痞子三分冷 提交于 2019-11-28 16:04:23
UGUI和NGUI在使用上很相似,但UGUI封装的更好,使用起来更加方便 1:Button image是指定按钮的背景精灵 Image type:是设置精灵的显示类型,和NGUI是一样的,Sliced是九宫切、、、、、、 Button :Transition 是选择按钮被选中时的变化种类,Sprite swap 可以用四个精灵图片的切换表示按钮的按下 color t ine用颜色的变化来表示按钮按下的效果 创建方法 1直接Create---UI----Button物体,这个物体是有Image和Button组件的,可以用Image为Button指定精灵,Button是实现按钮功能的脚本, 再在Button物体下下创建一个 Text用来显示button的作用 2 直接创建一个Image精灵对象,再在精灵对象下加Button脚本,这样也可以具有Button的功能。 使用Button 1:使用面板在代码中得到Button组件,对Button组件进行操作,使用面板中的OnClick绑定Button点击时触发的脚本中的方法。 2:使用代码得到并控制Button组件 using UnityEngine.UI; using UnityEngine.SceneManagement; public class PlayGame : MonoBehaviour { private Button

Unity 求两个物体的夹角

左心房为你撑大大i 提交于 2019-11-28 13:20:24
1.点乘公式:a·b=|a|·|b|cos<a,b> ,其中|a|和|b|表示向量的模,<a,b>表示两个向量的夹角。Unity中用Vector3.Dot()求点乘。 点乘结果=0,两向量垂直;点乘结果>0,两向量夹角小于90°;点乘结果<0,两向量夹角大于90°。 2.叉乘公式:c =a x b 其中a,b,c均为向量,结果向量c垂直于a,b向量所在的平面。Unity中用Vector3.Cross()求叉乘。 简单说,点乘判断角度,叉乘判断方向。 public class CalculateAngle : MonoBehaviour { public GameObject Cylinder1; public GameObject Cylinder2; // Use this for initialization void Start () { } // Update is called once per frame void Update () { GetAngle(); } public void GetAngle() { //点乘 float dot = Vector3.Dot(Cylinder1.transform.right, Cylinder2.transform.up); //弧度转角度 float angle = Mathf.Acos(dot) * Mathf

玩转Unity中的ML-Agents 机器学习(一):系统环境安装

我的梦境 提交于 2019-11-28 08:06:18
2018年4月17日更新-------------------------------------------------------- 目前github官方主页上ml-agents已有中文翻译,传送门是: https://github.com/Unity-Technologies/ml-agents/tree/master/docs/localized/zh-CN 2018年3月30日更新--------------------------------------------------------- 因为前不久,ML-Agents出了最新的0.3版本,而且内容也做出了较大的更新,现在对这篇环境安装的内容做出补充说明,原来的博文有些地方已经过时了。最佳的Windows环境安装教程以官方Github页面为准,传送门是在这里: https://github.com/Unity-Technologies/ml-agents/blob/master/docs/Installation-Windows.md 上面是windows用户安装环境的英文教程。此外,我会针对原来博客的部分内容作出修正补充: 1.原博客说用python3.5版本 和tensorflow1.3 版本,其实当前时间点(3月30日),最新的ml agent v0.3版本是支持到python3.6 和 tensorflow

Unity生命周期的自我理解

北战南征 提交于 2019-11-28 07:59:28
首先是ReSet相比于其他函数较特殊 只在编辑模式下调用且只调用一次 在用户点Inspector面板下的Reset按钮时或第一次添加组件时调用 Awake 该函数中进行游戏对象的初始化 例如GameObject.FInd GameObject.FindWithTag Awake函数游戏运行之后第一个执行且执行一次 生命周期执行完一次后直接跳到OnEnable 不走Awake 如果要程序运行之后要禁用脚本 在Awake脚本中写this.enable=false 只执行到Enable函数 不进行以下生命周期函数的执行 Enable 该函数中判断当前脚本状态是否可继续执行 如果enable=true继续执行 enable=false不可执行 但可以在其他脚本将enable=true继续往下执行 Start 该函数在生命周期中也是只执行一次 其中可以由自己调整初始化代码顺序 假如Enable为false时在别的脚本中设置为true 也就是说该脚本可以继续执行了 生命周期要重新到Enable函数 走到Start时要判断Start函数是否执行过 执行过就不再执行 比如初始化主角位置为0 生命周期执行完一次之后主角位置改变了 则不能再次进入Start函数将主角位置初始化 FixedUpdate 固定帧更新 常常做一些物理行为的方法 比如刚体加力 发子弹时 就将作用力用在该函数的固定帧中

U3D学习基础知识

蹲街弑〆低调 提交于 2019-11-28 07:53:10
一、调整Main Camera 调整“Projection”属性为“Orthographic”; 二、C#脚本文件说明 MonoBehaviour是unity中一个非常重要的类,它定义了基本的脚本行为 Start() 函数: Start会在Update函数第一次运行之前调用并只调用一次,一般用于进行脚本的初始化操作 Update() 函数: Update函数会在每帧都会调用一次,一般用于更新游戏场景和状态 三、将材质球(Material)赋给部件 ——> 直接拖动到部件上即可 四、知识点回顾 1、虚拟仿真(VR),又称虚拟现实技术 { 虚拟现实是利用电脑模拟产生一个三维空间的虚拟环境,通过输出设备提供给使用者关于视觉、 听觉、触觉等感官的模拟,让使用者如同身历其境一般,并能够及时、无限制地观察三维空间内的 事物,通过各种输入设备与虚拟环境中的事物进行交互。 } 2、Unity软件基础 { 开发者可在Unity中导入3D模型、图像、视频、声音等各种资源;可利用Unity快速可扩展的场 景构建模块,穿件复杂的虚拟世界;可利用C#和JavaScript等开发语言和脚本开发工具编写脚本。 变换工具:Hand(手形)工具 Q ;Translate(移动)工具 W ; Rotate(旋转)工具 E ;Scale(缩放)工具 R ; 坐标系工具: Transform Gizmo(变换Gizmo

unity 一个简单 小型的C#Socket网络通信库 聊天室示例

怎甘沉沦 提交于 2019-11-28 07:22:06
先上一个思维导图 下面是效果图 服务端 ChatSession继承了 KGSocket的 KGNetSession<T> 用于会话管理的 ChatServe继承了 KGSocket的 KGSocketServe<T,R> 创建服务器,处理任务 还有业务逻辑调用 ChatDatasPack 主要用于分辨消息是哪个客户端发定义的数据类 流程 ChatServe StartCreate() 创建了服务器 每连进来一个客户端就会增加一个 ChatSession会话管理,ChatSession 会话收到客户端发过来的指令 会添加到ChatServe的 DataPackQue 任务队列进行排序处理 返回给客户端消息 客户端 GameRoot 处理 业务逻辑 连接/发送消息给服务器 UI管理都在这 =。=示例凑合写懒得区分了 ChatNetSession继承了 KGSocket的 KGNetSession<T> 用于会话管理的 ImageExtension扩展工具类 就图片与Byte之前的互相转换用的 流程 GameRoot. StartCreate()连接 服务器 InItClickEvent() UI的按钮事件绑定都在这里了 登录会发送指令过去服务器,在ProcessNetData()这里进行处理在服务器接收到的消息 调用业务逻辑 demo下载地址: https://download

Unity 截图选择框,中间全透明,边缘半透明

核能气质少年 提交于 2019-11-28 05:50:37
效果: 点击白色框可拖拽选择区域 代码: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class jietu : MonoBehaviour, IDragHandler, IEndDragHandler,IBeginDragHandler { void Start() { //DrawTriangle(30, 0, 100, 250, 200, 100, mat);//三角形的三个定点坐标 } public void OnBeginDrag(PointerEventData eventData) { dragObj = eventData.rawPointerPress; } public void OnDrag(PointerEventData eventData) { if (dragObj!=null) { dragObj.transform.position = Input.mousePosition; leftBottomPos = leftBottom.transform.position; leftTopPos = leftTop.transform.position;

【Unity】给物品添加力

一曲冷凌霜 提交于 2019-11-28 05:18:12
给物体添加力 两个方法: Rigidbody.AddForce(Vector3,ForceMode):给刚体添加一个力,让刚体按世界坐标系进行运动 Rigidbody.AddRelativeForce(Vector3,ForceMode):给刚体添加一个力,让刚体按自身坐标系进行运动 注意:物体运动过程中自身坐标系可能随时发生改变(例如球滚动),这就意味着按自身坐标系运动方向可能会随时发生变化 Vector3:力的向量,ForceMode:力的模式(枚举类) 四种力的模式(Ft=mv): ForceMode.Force:给物体一个持续的力 ForceMode.Acceleration:给物体一个持续的加速度,但是忽略其质量,质量被默认为1 ForceMode.Impulse:给物体添加一个瞬间的力 ForceMode.VelocityChange:给物体添加一个瞬间的加速度,忽略其质量 1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 public class Text1: MonoBehaviour 5 { 6 //因为Start()只会在开始游戏时被执行一次,所以一般都用来初始化 7 private Transform myTransform; /