unity

Unity IOS 软键盘输入框问题

自闭症网瘾萝莉.ら 提交于 2019-12-10 05:41:22
Unity的软键盘输入框在IphoneX上第一次打开时,有一半会飞到屏幕外面,研究后发现是因为软键盘输入框在计算高度时候没将整个游戏的frame的偏移设置进去,而第一次打开输入框的时候偏移较大,所以飞到界面外面了。 知道问题了就好办了,打开Unity导出的IOS工程的Class/UI/Kayboard.mm文件,找到里面的positionInput方法,将 editView.frame = CGRectMake(0, y - kToolBarHeight, kbRect.size.width, kToolBarHeight); 替换为 editView.frame = CGRectMake(0, y - kToolBarHeight - [UnityGetGLView() frame].origin.y, kbRect.size.width, kToolBarHeight); 即可解决。 可直接下载该文件替换: https://download.csdn.net/download/yhjsspz/12021727 来源: CSDN 作者: yhjsspz 链接: https://blog.csdn.net/yhjsspz/article/details/103461033

Unity3D —— 移动

泄露秘密 提交于 2019-12-10 04:10:26
目录 (一)通过Transform组件移动物体 (二)通过Rigidbody组件移动物体 (三)通过CharacterController组件移动物体 (一)通过Transform组件移动物体 Transform.position Transform 组件用于描述物体在空间中的状态,它包括 位置(position),旋转(rotation),缩放(scale)。 可直接操作Transform来修改物体的位置(position)。 Transform.Translate ➜ public function Translate ( translation :Vector3, relativeTo :Space = Space.Self ):void; 该方法可以将物体从当前位置,移动到指定位置(从指定A点移动到B点时),并且可以选择参照的坐标系。 当需要进行坐标系转换时,可以考虑使用该方法以省去转换坐标系的步骤。 Vector3.Lerp:线性插值;➜ public static Vector3 Lerp ( Vector3 from ,Vector3 to ,float time ); 它的作用就是按照 time 计算 from 和 to 之间的插值。 time的取值范围是[0, 1],当time = 0, 返回值是from,当time = 1,返回值是to,当time = 0.1

Unity 基于帧同步的网络优化方案

荒凉一梦 提交于 2019-12-10 03:45:44
帧同步含义 游戏客户端接受来自网络的多个客户端的操作,如果这些操作在各个客户端是一样的,那么多个客户端的显示也就一样了,这就带来了“同步”的效果。所以在这种情况下,各个客户端的运算要绝对一致,不能依赖诸如本地时间、本地随机数等等“输入”,而要一切以网络来的操作数据为主。 一般来说,大多数的游戏客户端引擎,都会定时调用一个接口函数,这个函数由用户填写内容,用来修改和控制游戏中各种需要显示的内容。比如在在Unity里面叫Update(),这类函数通常会在每帧画面渲染前调用,当用户修改了游戏中的各个角色的位置、大小后,就在下一帧画面中显示出来。而在帧同步的游戏中,这个Update()函数依然是存在,只不过里面大部分的内容,需要挪到另外一个类似的函数中,我们可以称之为UpdateNet()函数——由网络层不断的接收服务器发来的“网络帧”数据包,每收到一个这样的数据包,就调用一次这个UpdateNet()函数,这样游戏就从通过本地CPU的Update()函数的驱动,改为根据网络来的UpdateNet()函数驱动了。显然,网络发过来的同步帧速度会明显比本地CPU要慢的多,这里就对我们的游戏逻辑开发提出了更高的要求——如何同步的同时,还能保证流畅? 实现UpdateNet函数内容,其实就是定义一个堆栈用于存放网络发过来的消息,通过帧监测将其数据拿出来使用

关于Unity头部IK的一些分析

时光毁灭记忆、已成空白 提交于 2019-12-10 03:31:20
关于UnityIK控制头部朝向目标的一些研究 (事先声明,本人为编程菜鸡,所使用的方法可能非常笨,不具备任何参考价值,请谅解) 虽然研究动画系统一段时间了,但IK也是最近这段时间才刚刚接触到的,其他部位IK暂时不提,今天我要研究的IK是头部朝向的IK。 让我们开始吧 首先,基本的基本,打开人物的Animaotr面板,添加一层IK层 接着为你的人物设置IK事件属性就好了 这里用到了两个API,分别是 SetLookAtWeight 和 SetLookAtPosition SetLookAtWeight 的作用是设置权重,权重越低,IK所对动画造成的影响越低 SetLookAtPosition 的作用是设置IK的朝向位置 主要实现思路有两种: 1、当有目标进入玩家视线时,权重缓慢增长到正常值,当目标离开时,权重又慢慢的回落到0(既IK不对动画产生任何影响) using System . Collections ; using System . Collections . Generic ; using UnityEngine ; using DG . Tweening ; public class IKLookAT : MonoBehaviour { private Animator animator ; private GameObject minDictObj ; private

Unity3D调用DLL动态链接库

独自空忆成欢 提交于 2019-12-10 01:53:45
1.打开vs2017新建新项目 2.选择 Windows桌面>动态链接库(DLL) 3.定义一个C++加法函数 4.生成DLL动态链接库 5.在unity中Assets下创建plugins文件夹,将DLL放入其中(必须放到plugins下,否则unity不认) 6.在unity下新建一个Test.cs脚本 using UnityEngine; using System.Runtime.InteropServices; public class Test : MonoBehaviour { [DllImport("Dll1")] public static extern int add(int a, int b); void Start() { print(add(10, 20)); } } 7.将Test.cs脚本拖拽到Main Camera上 8.运行结果 来源: CSDN 作者: 萌面刺客 链接: https://blog.csdn.net/zhunju0089/article/details/103458855

Unity3D系列1 : foreach对于性能到底有没有影响

走远了吗. 提交于 2019-12-09 06:24:54
0x00 序言 本文无意比较for和foreach谁效率更高,不会设计到for和foreach取值之类的等等。单纯探讨foreach会不会影响unity3d效率。 事情开端是这样的,之前在看unity优化的时候,遇见了这么一句: 尽量不要使用foreach,而是使用for。foreach其实会涉及到迭代器的使用,而据传说每一次循环所产生的迭代器会带来24 Bytes的垃圾。那么循环10次就是240Bytes。 由于刚接触unity以及c#不久,当时没有仔细研究内在原理,只是简单相信了这个说法。于是接下来我会在代码中尽量避免使用foreach,虽然我觉得foreach真的挺好用的。 然后,现在每次遇见遍历,我都会思考为什么foreach会有这样的行为,我想知道真正的原因,直到今天,我才深入寻找资料去论证这个观点。 0x01 c#中for比foreach指令更加精简,效率更高? 关于这个说法,百度了下(懒得翻墙去google),找到一篇被广泛转发的文章: Unity里面应尽量避免使用foreach 里面代码如下: using UnityEngine; using System.Collections; public class ForeachTest : MonoBehaviour { protected ArrayList m_array; void Start () { m

VRchat模型之unity

穿精又带淫゛_ 提交于 2019-12-09 04:16:29
最好在下载unity之前看下官网用什么版本。不然有可能SDK不兼容。 目前: 2.导出材质并设置材质球 打开unity后直接双击SDK。 着色器和动态骨骼也一样。 登录unity。 如果不能上传模型,登录后会有一个提示。 把文件夹拖到assets项目里 ,不能只弄一个fbx,因为需要贴图等文件。 点击fbx文件,右边点第四个。 多了一个文件夹,有材质球。 把fbx文件拖到这个里面,人物就出现在左上角的画面里了。 人物颜色会正常点。 不喜欢阴影的话调这个。越小越没有阴影。 如果从某个方向看见衣服是破损的 选这个就可以了, width默认0.2,不想要描边可以设置为0. 0和0.2对比,看自己喜好,最重要的是衣服就不会破损了,这时人物里面向外看就看不到外面了,只能看到衣服。 3.修改骨骼类型,并检查骨骼映射 接下来最好看下骨骼,点击config... ,保存名字随意 Body这三个一定要是正确的。不然后期不能上传。红色的那个可以无视,因为在blender点了全身追踪的缘故。 总而言之就是前面是什么后面就是什么。 如果不是T-pose。点击下面设置成T-pose。 4.添加人物插件,设置视角球位置,调整动画集 调整视角球,水平正中央。 Male男,Female女。行为举止为有所不同,最明显体现在坐姿,女生是二郎腿,男生是两腿张开。 Lip Sync选第四个,Body拖过来 依次选择对应的

基于VS2017将C++、C#封装代码成dll文件,使用Unity进行调用(一)

佐手、 提交于 2019-12-09 04:06:05
基于VS2017将C++、C#封装代码成dll文件,使用Unity进行调用(一) 标题:**Unity调用C#封装后的dll文件:** 标题: Unity调用C#封装后的dll文件: 话不多说,五步即可,每步配详细图解: 第一步新建VS工程,C#: 注意是桌面的类库文件(.NET FramWork), 不要新建成C#控制台应用了!!! 第二步,写C#代码,进行封装—发布为dll文件: ⑴:C#代码:这里定义的是静态的字符串连接函数,记得这里定义的方法是public、static的 ⑵之后发布为dll: ①更改属性: 由于Unity默认支持的框架(.net3.5)比较低,亲测图中配置没问题: ②生成解决方案: 这样你的dll就发布完成啦; 第三步,新建一个Unity工程,在工程中新建一个文件夹Plugins,找到刚才发布好的.dll文件拖进Plugins文件夹中。 第四步写Unity端代码: 新建一个TestFirstDll.cs: /**************************************************** 文件:TestFirstDll.cs 作者:Study 邮箱: 2954806512@qq.com 日期:2019/8/1 10:32:32 功能:Unity调用C#封装Dll文件 *********************************

C#开发Unity游戏教程之Scene视图与脚本的使用

两盒软妹~` 提交于 2019-12-07 20:12:40
C#开发Unity游戏教程之Scene视图与脚本的使用 Unity中Scene 视图的快捷操作 Scene 视图是开发者开发游戏时,操作最频繁的视图。因为一旦一个游戏对象被添加到游戏的场景中,就需要首先使用鼠标为这个游戏对象设置出合适的状态。而且开发者还需要多角度的观察游戏场景中的各游戏对象。基于以上的原因, Unity 提供了很多快捷操作,支持开发者对 Scene 视图所做的各种操作,常见的操作方式有: 直接按下键盘上的 Q 、 W 、 E 、 R 键,即可选中 Unity 左上角,工具栏上的 4 个按钮,且按钮与按键一一对应,省去了开发者使用鼠标点击的麻烦。 使用鼠标的滚轮,可以控制 Scene 视图“窗口”与各游戏对象的远近,如图 2-14 所示,且向上滚动靠近,向下滚动远离。 图 2-14 使用鼠标的滚轮,控制 Scene 视图与场景中各游戏对象距离的远近 使用鼠标双击 Hierarchy 视图上的游戏对象名,场景视图会移动,直到对应的对象处于场景视图的中间,如图 2-15 所示。当开发者在场景中找不到对应的游戏对象时,可以使用这种方法快速找到。 图 2-15 鼠标双击对象名,场景视图速度定位到对应对象,且被显示在场景视图的中央 在场景视图里,按下鼠标中间的按钮(或滚轮),鼠标变成了 ,然后移动鼠标,可以任意移动场景 。 , 如图 2-16 所示 , 。其

Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏

為{幸葍}努か 提交于 2019-12-07 20:12:26
Unity 2D游戏开发快速入门 第 1 章 创建一个简单的 2D 游戏 即使是现在,很多初学游戏开发的同学,在谈到 Unity 的时候,依然会认为 Unity 只能用于制作 3D 游戏的。实际上, Unity 在 2013 年发布 4.3 版本的时候,就开始提供对制作 2D 游戏的支持了。例如,提供了一些专用于开发 2D 游戏的 Unity 工具。现在 Unity 已经发布了版本 4.5 ,对 2D 游戏的支持更是完善了不少。为了说明 Unity 对 2D 游戏所提供的支持,本章会使用这些在 Unity 中原生的工具,开发一个简单的 2D 游戏。本文选自《 Unity 2D游戏开发快速入门》 1.1 地面 一般情况下我们认为“地面”是精灵的落脚点,没有这个“地面”精灵会发生坠落。因此本章创建一个 2D 游戏的第一步是,创建一个供游戏精灵落脚的“地面”。创建的具体的操作步骤是: 本文选自《 Unity 2D游戏开发快速入门》 ( 1 )新建一个游戏项目、命名、并设置为 2D 项目,如图 1-1 所示。从中可以看出本游戏项目名为 world 。 图 1-1 新建游戏项目 ( 2 )准备一个将用作 2D 游戏“地面”的图片,然后导入到新建游戏项目的 Project 视图里,如图 1-2 所示,本示例使用的“地面”图片,名为 Platform 。 提示 1