EKsumic's Blog

let today = new Beginning();

Click the left button to use the catalog.

Unity3D

44 Blogs

128k+ Reads 128338 Reads

5 likes
精選

原創 [Unity]从零开始认识C#脚本

食用方案:建议有一定C#基础的话可以直接看。不过没有的话,问题也不是太大,因为主要还是接触Unity中的常用API,记住就可以了。 参考方案:以官方的Standard Assets的ThirdPersonCharacter为例。 最基础的C#请看这里→C#入门基础(一) ...

2020-03-30 17:20:10

2k+ 2928 reads

7 comments

原創 [Unity]Mirror联网插件——Custom Data Types

Custom Data Types(自定义数据类型)本篇介绍一般情况下能通过Network传输的变量。 一般结构体能通过Network传递, 一般类能传递,但是有继承的类,不行 需要custom serialize ...

2020-04-14 14:42:41

2k+ 2536 reads

2 comments

演繹 [Unity]Mirror联网插件——SyncVars

SyncVars是从networkbehavior继承的类的属性,这些类从服务器同步到客户端。 当一个游戏对象被生成,或者一个新的玩家加入一个正在进行的游戏时,他们会被发送到他们可见的网络对象上所有同步变量的最新状态。 使用SyncVar自定义属性指定脚本中要同步的变量 ...

2020-04-13 20:50:58

2k+ 2268 reads

0 comments

原創 [Unity]Mirror联网插件Error: Void SyncVarDemo::SetColor(UnityEngine.Color32) should have signature

Mirror.Weaver error: System.Void SyncVarDemo::SetColor(UnityEngine.Color32) should have signature: public void SetColor(UnityEngine.Color32 oldValue, UnityEngine.Color32 newValue) { } ...

2020-04-13 19:04:35

2k+ 2780 reads

1 comments

原創 [Unity]Mirror联网插件——基本信息同步(三)

显然,你并不想所有的客户端都去响应服务器的同一个指令, 就比如上一讲的变换颜色同步, 这样的颜色变化,会在所有的客户端执行。 如果你需要特定的Client的进行响应,那么就需要使用[TargetRpc]。 还是老样子,这个方法命名强制以Target开头,其他随便怎么写 ...

2020-04-13 06:18:01

3k+ 3559 reads

0 comments

原創 [Unity]Mirror联网插件——基本信息同步(二)

接着上一讲,是的,这样就实现了完全同步。 但是还是要注意,以[ClientRpc]开头的方法,最好严格以Rpc开头,就像上面代码写的一样。 为什么要强调这个东西,因为 这 很 重 要 。 我们来看看这个同步,原理上讲还是有先后顺序的: 客户端→服务端→客户端 由客户端发起的,对服务器的操作指令,发完服务器又立刻返回了相同的方法给自己。 这样看起来,我们和服务器同步了,但实际上还是存在延迟的 ...

2020-04-13 05:51:04

4k+ 4298 reads

1 comments

原創 [Unity]Mirror联网插件——基本信息同步(一)

接上篇:[Unity]Mirror联网插件的基本使用 本篇:[Unity]Mirror联网插件——基本信息同步(一) 我们发现一个新的问题: Server发生的事情并没有正确的反映在客户端上。 很正常,因为我们还没做同步。 基本案例: 1.Create Empty,命名为CommandSprite。 2.Add Component,增加Sprite Renderer组件。 3.将Sprite的填充内容设置为InputFieldBackground。(这里不是硬性要求) ...

2020-04-13 05:02:08

4k+ 4180 reads

0 comments

原創 [Unity]Mirror联网插件的基本使用

基本安装 1.在场景里CreateEmpty,并将其命名为NetworkManager。 2.Add Component,添加Network Manager。3.Add Component,添加Network ManagerHUD。4.Create Cube,并在Cube上挂一个NetworkIdentity ...

2020-04-13 03:10:25

3k+ 3924 reads

0 comments

原創 [Unity]混合树(Blend Tree)初认识

混合树(Blend Tree)是用来混合动画的。 它默认是Animator Controller里面的一个State。 和其他的单个State里面存放1个Animation不同,混合树State里面可以存放多个甚至任意个动画 ...

2020-04-12 04:15:28

3k+ 3199 reads

0 comments

原創 [Unity]什么是Vector3.Scale函数?

官方描述: Multiplies two vectors component-wise. Every component in the result is a component of a multiplied by the same component of b.事实上就是两个向量相乘 ...

2020-04-11 19:25:53

2k+ 2429 reads

0 comments

原創 [Unity]什么是Camera.main?

根据官方描述,它会以寻找Tag的形式,找到第一个Tag名称为MainCamera的摄像机。 并且如果你有多个Tag为MainCamera的GameObject,它只会寻找第一个并且是Camera的Object,没有就返回null ...

2020-04-11 17:55:53

1k+ 1799 reads

0 comments

原創 [Unity]什么是CrossPlatformInputManager.GetAxis()?

CrossPlatformInputManager和Input的区别: 基本上就是跨平台与不跨平台的区别 [猜测] 在《Unity5权威讲解》中给出的SpaceShooter的基本案例中使用的是Input.GetAxis(),并没有详细介绍CrossPlatformInputManager.GetAxis()与之的区别。 但可以根据名称知道,CrossPlatform就是跨平台, 如果是安卓、IOS的游戏开发教程,脚本中或许会用到CrossPlatformInputManager, 不过PC版的默认还是Input ...

2020-04-11 17:01:08

2k+ 2624 reads

0 comments

原創 [Unity]什么是FixedUpdate()?什么是LateUpdate()?

什么是FixedUpdate()? 这是用于处理Rigbody的专用方法, 因为Update()是按帧执行,FixedUpdate()是真实时间执行, FixedUpdate()可设置时间间隔。 PS:Edit->ProjectSetting->time  找到Fixedtimestep,就可以修改时间间隔了 ...

2020-04-11 16:47:53

1k+ 1703 reads

0 comments

原創 [Unity]Animator Controller简介

Animator Controller 动画控制器, 接之前的Blog→这里, 这里从Animator的UI讲起, 动画控制器是怎么控制动画播放的呢? 假设不使用脚本,Animator Controller了提供了4种Parameter来供控制流程 这4个类型动得参数分别是Float、Int、Bool、Trigger ...

2020-04-09 17:08:01

3k+ 3071 reads

0 comments

演繹 [Unity] Mathf.Repeat函数和Mathf.PingPong函数

Mathf.Repeat函数和Mathf.PingPong函数 相同点:都是在重复 不同点:Repeat是直接重复,123123123…… PingPong是来回重复,123212321…… 在使用场景上,PingPong可能会用于敌人的巡逻 ...

2020-04-08 10:59:19

3k+ 3386 reads

0 comments

原創 [Unity]Physics.SphereCast相关问题汇总

Physics.SphereCast() 会发射一种球体射线,返回Bool值,目的用于检测碰撞。 返回true表示有碰撞,否则没有 ...

2020-04-08 09:51:27

4k+ 4033 reads

0 comments

原創 [Unity]Rigidbody.position相关问题汇总

Rigidbody.position允许你使用物理引擎获取和设置刚体的位置。 如果使用Rigidbody.position更改刚体的位置,则Transform将在下一个物理模拟步骤之后更新。 这比使用Transform.position更新位置更快,因为后者将导致所有附加的碰撞器重新计算它们相对于刚体的位置 ...

2020-04-08 03:52:19

2k+ 2579 reads

0 comments

原創 [Unity]CapsuleCollider.radius是什么?

Description The radius of the sphere, measured in the object's local space. The capsule's radius will be scaled by the transform's scale. ...

2020-04-08 02:54:44

2k+ 2218 reads

0 comments

原創 Unity3D中Rigidbody.velocity和Addforce的区别

Rigidbody.velocity 这个方法是瞬间给物体一个恒定的速度,将物体提升至该速度。 Rigidbody.addForce 这个方法瞬间给物体一个规定好的力 ...

2020-04-07 23:53:22

2k+ 2410 reads

0 comments

原創 [Unity]什么是deltaTime?

什么是deltaTime? 解释这个概念,先得说明为什么要用deltaTime? delataTime的出现,用于应付普通Time无法应对的情况。 简单地说,是为了应付 【随帧移动】 还是 【随秒移动】。  void Update() 是Engine每帧都会执行一遍的函数,如果你在Update里面写上了移动1m,那么每帧都会移动1m。 如果1秒有30帧,Target就会移动30m。 但如果你想要的是每秒移动1m,那就不得不用deltaTime来实现 ...

2020-04-07 21:59:34

2k+ 2079 reads

0 comments

原創 [Unity]什么是m_Animator.GetCurrentAnimatorStateInfo(0)?

关于unity Animator 怎么判断一个动画播放结束这里有几种方法,这里只介绍一种 ...

2020-04-07 18:53:45

2k+ 2491 reads

1 comments

原創 [Unity]什么是Mathf.Lerp函数?

public static float Lerp(float a, float b, float t); a是开始值,b是结束值,t可以看作百分比。 我们可以把这个看作是一个进度条,a是0,b是100,t是个百分比; 当我填入t=0.56的时候,进度条应该在56的位置,即该函数会返回浮点数56 ...

2020-04-07 17:50:29

2k+ 2873 reads

0 comments

原創 [Unity]什么是Mathf.Atan2函数?

public static float Atan2(float y,float x);返回以弧度表示的角度,其Tan为y/x ...

2020-04-07 17:34:07

2k+ 2415 reads

0 comments

原創 [Unity]什么是Vector3.ProjectOnPlane?

什么是Vector3.ProjectOnPlane? 官方文档解释得可能太长了, public static Vector3 ProjectOnPlane(Vector3 vector, Vector3 planeNormal) 一共2个参数,vector是你的向量,planeNormal是某个平面的法向量。 这个函数返回的是vector在某个平面的投影向量 ...

2020-04-06 17:36:57

3k+ 3782 reads

0 comments

原創 [Unity]Root Motion深度解析

这里的Bake into Pose 也就是将变换设置为Body Transform(pose)的一部分。我们可以这样去理解,如果是设置成Body Transform(pose)的话,就相当这些变换是属于动画本身的一部分,也就是说,不管设不设置Apply Root Motion,在场景中,我们都会看到模型位置或角度的变化 ...

2020-04-05 13:46:06

6k+ 6071 reads

0 comments

演繹 Unity中的坐标系

Unity使用左手坐标系, 左手拇指表示X轴,食指表示Y轴,中指表示Z轴, Z轴代表了游戏对象前进的方向,Vector3.forward与Vector3(0,0,1)一样, Vector3.forward乘以速度就是具有Z轴方向的向量 ...

2020-04-04 17:45:03

2k+ 2353 reads

0 comments

原創 [Unity]Debug.DrawLine()是什么?如何使用?

Debug.DrawLine()是在场景视图中可视化地面检查光线的工具,Debug.DrawLine()方法有2个参数:DrawLine(起始坐标,结束坐标) ...

2020-04-04 17:31:07

2k+ 2507 reads

0 comments

演繹 [Unity]什么是RaycastHit?

RaycastHit类用于存储发射射线后产生的碰撞信息,重心坐标 我们撞击到的三角形的重心坐标。 碰撞体 撞到的碰撞体。 距离 距离,从射线的原始点到影响点。 光照地图坐标 碰撞点处的uv光照贴图坐标。 normal 射线击中的表面的法线。 point 在世界坐标中, 射线击中碰撞体的位置的影响点。 rigidbody 击中对象的刚体,如果collider没有刚体,那就会返回null。 textureCoord 碰撞位置处的uv纹理 ...

2020-04-04 16:24:51

1k+ 1933 reads

0 comments

原創 [Unity]什么是Raycast?

什么是Raycast ? 在射击游戏里面,比如CS, 当你射击的时候,不是实际上有个子弹飞出去了, 而是射线从枪口出来,到一个很远的距离, 凡是在这条射线路径上的玩家,都会受到伤害 ...

2020-04-03 17:02:29

2k+ 2357 reads

0 comments

原創 [Unity]不用GetComponent<Transform>()得到的transform

在《Unity5权威讲解》这本书中, 第一份代码就要求你在Void Start()方法中声明 tr=GetComponent() 所以你每次都会在类中先private Transform tr; 然后通过获取组件的方式,来给tr赋值,ransform是Object的固有属性之一, 目前看来,Unity似乎直接帮你定义好了这个静态变量,你可以直接使用 ...

2020-04-03 12:04:41

2k+ 2008 reads

0 comments

原創 [Unity]Standard Assets的第三人称控制器脚本中的InverseTransformDirection()

InverseTransformDirection(); 这个方法之所以会被使用,是因为第三人称控制器里面,根本没有用到鼠标移动控制转向这个功能。 在Standard Assets的第三人称控制器中, 当你按下与前进方向不符的方向按键时,人物首先会转向,然后再移动。 而转向的这个过程,如果你按Local坐标查看的话,你会看到蓝色箭头一直指向人物正前方 ...

2020-04-03 11:05:51

2k+ 2994 reads

0 comments

原創 Unity的C#中Vector3.Normalize()和Vector3.normalized的区别

.normalized其实是归一化, 当玩家同时按下W和D的时候,玩家是斜着走的, 如果向前和向右的移动速度都1m/s,那么斜着走就是1.414m/s, 结论:斜着走比正常走路快。 这显然是不符合常理的。 为了解决这个问题,出现了.normalized ...

2020-03-31 16:54:08

3k+ 3447 reads

0 comments

原創 Shader入门基础(二)

在Unity主界面的Project选项卡中,右键Create一个Unlit Shader。虽然Unity这里列出了4种Shader,其实它们的本质是一样的, 只不过是Unity根据我们不同的需求创建的预设模板而已。 Unlit Shader是默认不参与光照计算的, 但又包含了Shader程序所具备的基本结构, 因此从这里入手会相对容易一些 ...

2020-03-31 07:26:51

2k+ 2502 reads

0 comments

演繹 [Unity3D]向量Vector3

[Unity3D]向量Vector3 在Unity中,用结构体来描述向量,什么是结构体请看→这里 namespace UnityEngine {public struct Vector3 {public float x; public float y; public float z;}} 向量的长度:向量的大小(或长度)称为向量的模 ...

2020-03-30 20:41:49

2k+ 2005 reads

0 comments

原創 2020市面上各大游戏引擎一览

Unity 目前市场份额最大的引擎,适合新手 UnReal4 目前市场上画质比Unity好的引擎,不适合新手 CryEngine 光追++,但致命架构问题,BUG非常多 Lumberyard CryEngine改,无优势,无特点,BUG也没修复完 Xenko 完全开源的引擎,但处于非常原始的状态 Godot 适合做2D的引擎 ...

2020-03-29 02:25:45

2k+ 2355 reads

0 comments

原創 [Blender]ASCII FBX files are not supported如何解决?

很不幸,你不能直接导入ASCII的FBX,但是你可以导入Binary的FBX,所以你需要一个第三方工具——Autodesk FBX Converter(免费) ...

2020-03-28 21:47:31

4k+ 4091 reads

0 comments

原創 [Unity]以m_开头的变量为什么在Insepector面板中不显示?

同样的,即使你写public float m_camelCase = 0; 在Inspector中也会变成 Came Case : [Image] 在Unity中,每当你写 [SerializeField] float m_MovingTurnSpeed = 360; 的时候,在Inpector中你将看到 去掉m_+首字母大写的自动补充空格的 如 Moving Turn Speed 这样的显示出来的变量。 是的, Unity为了更友好地显示,只要你使用了m_你就会在实际面板中看不到m ...

2020-03-25 13:16:56

2k+ 2652 reads

0 comments

原創 [Unity]为什么我需要使用[SerializeField] ?它是用来干什么的?

[SerializeField] 你想在面板序列化显示,但不想其它脚本访问它,通常和private连用 [HideInInspector] 你不想在面板中显示,但你想让其它脚本访问它,通常和public连用 注意点: ① [SerializeField]不可用于static变量。 ② [SerializeField]private float m_xx 在Inspector中只会显示xx。 ③ m_开头表示类的成员变量m为member的缩写,这是个习惯问题 ...

2020-03-25 13:14:29

3k+ 3129 reads

1 comments

原創 Shader入门基础(一)

图形渲染程序 显卡在设计之初,主要是为了解决实时渲染3D图像的问题, 实时即以很快的速度生成图像,而不是播放已经录好的图像——播放视频。 实时渲染对任何一个游戏都至关重要, 因为计算机在屏幕上生成的图像,都是对玩家操作的即时反馈。 CPU中非常常见的if-else语句,在GPU中效率并不高, 这就是为什么我们要学习Shader编程 ...

2020-02-28 21:22:05

2k+ 2355 reads

12 comments

原創 从零开始的Unity学习——第三天

这是一个怪物的动画逻辑。 我们先从Entry开始看, 第一个状态叫idle(闲置状态),它是怪物闲置站立时的动画(主要是呼吸抖动); 第二个状态叫walk(行走),它是怪物移动时会播放的动画; 第三个状态叫attack(攻击),它是怪物攻击时会播放的动作; 我们发现这三个状态之间的连线是双向的,这表示这三个状态可以互相切换 ...

2020-02-24 09:52:14

2k+ 2789 reads

0 comments