Questions tagged «c#»

C#是Microsoft与.NET平台一起创建的一种多范例,托管,强类型,垃圾回收的编程语言。

2
为什么Unity图层蒙版需要使用位移?
我终于弄清楚了为什么我的地面碰撞代码的图层蒙版不起作用。我曾经NameToLayer()用来获取所需的图层,但是图层蒙版使用位移来实际设置图层蒙版值。这是非常不寻常的,我看不出任何原因都无法在后面的代码中处理。为什么我们必须使用如下代码: mask = 1 << LayerMask.NameToLayer("Default"); 当这样的事情: mask = LayerMask.NameToLayer("Default"); 更加直观,并且与Unity API的其余部分类似?
10 unity  c# 

4
是否应该使用UsedImplicitly属性注释Unity生命周期方法?
使用UsedImplicitly属性注释Unity生命周期方法是否可以提高代码的可读性? 例如: public class Example : MonoBehaviour { [UsedImplicitly] private void Awake() { DoSomething(); } private void DoSomething() { // ... } } 这篇关于“构建Unity MonoBehaviours”的博客文章建议将此方法作为有用的约定。 使用[UsedImplicitly]属性注释代码中隐式(或自动)调用的所有Unity生命周期方法(开始,唤醒,更新,OnDestroy等),事件方法和其他函数。尽管此属性包含在UnityEngine.dll中,但ReSharper使用它来为似乎未引用的方法禁用代码清除建议。它还有助于使刚接触Unity和您的代码库的人更容易阅读代码,尤其是对于通过检查器引用的事件。 (注意:我不认为ReSharper会为看似未引用的Unity生命周期方法显示代码清理建议,因此这可能已过时。) 我同意上面的帖子,这对于那些对Unity较新的人可能会有帮助。我还认为这可能是标记那些有用的统一生命周期的功能不被使用的频繁程度Awake,Start以及Update。但是我想知道这是否真的是“干净代码”的良好约定,还是仅仅是噪音降低了可读性。
9 unity  c# 

5
为什么在Vector3s中不能使用运算符'> ='?
我正在尝试获得一个矩形,以便在我称为_positionA和的两个位置之间移动_positionB。两者都是类型Vector3。矩形移动得很好。但是,到达时_positionB它不会像应该的那样朝相反的方向移动。 我回到代码中看一看。我得出的结论是,随着对象的移动,if代码中的语句错过了rects位置等于的框架_positionB。如果rects的位置大于或等于, 我决定将代码修改为反向_positionB。我的代码不太长,因此我将在下面显示它: using UnityEngine; using System.Collections; public class Rectangle : MonoBehaviour { private Vector3 _positionA = new Vector3(-0.97f, -4.28f); //Start position private Vector3 _positionB = new Vector3(11.87f, -4.28f); //End position private Transform _rect_tfm; private bool _atPosA = false, _atPosB = false; public Vector2 speed = new Vector2(1f, 0f); private …
9 unity  c#  vector  mathematics  vector  matrix  unity  c#  transformation  java  3d  terrain-rendering  shading  ios  opengl-es  opengl  rendering  optimization  python  scripting  minecraft-modding  modding  pc  3d-meshes  mesh  culling  point-cloud  networking  interpolation  mathematics  game-design  ai  game-mechanics  animation  unreal-4  skeletal-animation  3dsmax  unity  c#  3d  opengl  c++  textures  unity  ide  cocos2d  cocos2d-x-js  unity  c#  mono  il2cpp  c++  game-loop  timer  linux  flash  actionscript-3  java  glsl  c++  vector  entity-component  c++  directx11  windows  visual-studio  libgdx  mouse  unity  c#  architecture  storage  unity  c#  rotation  coordinates  quaternion  vrpn  movement  vector  unreal-4  unity  shaders  unity  gui  text  bug  shooter  3d  animation  rendering  voxels  c++  mmo  multithreading  linux  textures  procedural-generation  terrain-rendering  multiplayer  mmo  game-state  java  android  libgdx  opengl  procedural-generation  unity  gui  3d  animation  tools  geometry-shader  mobile  advertisements  unity  c#  animation  scripting  unity  animation  unityscript  coroutines  unity  shaders  lighting  camera 

4
为什么我的C#6代码无法在Unity中编译?
为什么Unity无法使用C#6代码?它总是给我编译器错误。以下是一些代码示例: using static System.Convert; using static System.Environment; $"€{punten}{NewLine}€{Money}{NewLine}€{KilledEnemies}{NewLine}€{bonus}{NewLine}€{total}"; 我使用Visual Studio作为我的代码编辑器,并且构建时没有错误。如果我在Unity中按播放,它将无法建立。
9 unity  c# 

1
生成用于地形生成的Octree
我以前已经实现了行进立方体/四面体以渲染IsoSurface。它可以正常工作(YouTube),但是性能却很糟糕,因为我从来没有绕过根据视距实现可变的“细节级别”(甚至删除了旧的,遥远的块)。 我决定再次尝试一下,这次要正确地做。我首先创建了一个OctreeNode,它在Build()被调用时的工作方式如下。 如果块太小而无法构建,请立即返回。 算出表面是否穿过该块的体积。 如果是这样,则决定我们是否要提高LOD(因为相机已关闭) 如果是这样,则生成8个子代并对其调用相同的过程 如果没有,请使用当前节点的尺寸构建网格 一些伪代码: OctNode Build() { if(this.ChunkSize < minChunkSize) { return null; } densityRange = densitySource¹.GetDensityRange(this.bounds); if(densityRange.min < surface < densityRange.max) { if(loDProvider.DesiredLod(bounds)² > currentLoD) { for(i 1 to 8) { if(children[i] == null) { children[i] = new OctNode(...) } children[i] = children[i].Build(); } } …
9 unity  c#  voxels  octree 

1
双重轮廓-查找特征点,法线关闭
我正在按照本教程来实现双重轮廓 http://www.sandboxie.com/misc/isosurf/isosurfaces.html 我的数据源是16x16x16的网格;我从左到右,从近到远地遍历此网格。 对于我的网格的每个索引,我创建一个多维数据集结构: public Cube(int x, int y, int z, Func<int, int, int, IsoData> d, float isoLevel) { this.pos = new Vector3(x,y,z); //only create vertices need for edges Vector3[] v = new Vector3[4]; v[0] = new Vector3 (x + 1, y + 1, z); v[1] = new Vector3 (x …
9 c#  geometry 

2
如何在Unity 5中检测UI图像的鼠标悬停?
我有一幅图像,可以将其设置为四处移动以及放大和缩小。麻烦的是可以在场景中的任何位置进行缩放,但是我只希望在鼠标悬停在图像上时进行缩放。我尝试使用OnMouseEnter,OnMouseOver,事件触发器,所有三个没有对撞机,带对撞机,带触发器对撞机的触发器,以及所有这些在图像本身和空游戏对象上使用的触发器。但是这些都不起作用...所以我绝对很沮丧...有人可以在这里帮助我! 这是我的脚本: private float zoom; public float zoomSpeed; public Image map; public float zoomMin; public float zoomMax; void Update () { zoom = (Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime * zoomSpeed); map.transform.localScale += new Vector3(map.transform.localScale.x * zoom, map.transform.localScale.y * zoom, 0); Vector3 scale = map.transform.localScale; scale = new Vector3(Mathf.Clamp(map.transform.localScale.x, zoomMin, zoomMax), Mathf.Clamp(map.transform.localScale.y, …
9 unity  c#  gui  image  mouse 

3
保存资产时如何处理版本更改?
我已经从事RPG已有一段时间了,我使用了两种不同的序列化技术。 敌人,武器,物品将另存为XML。 映射和事件保存为“受控二进制”(每个类都有一个保存/加载方法,它们决定要保存/加载的内容)。 但是我开始质疑我对地图和事件的选择。我的担忧: 我已经创建了一个地图编辑器,但是我仍然想念仅通过打开文件就能更改一些小东西。 变化太多了。假设我想向一个类中添加一个变量,如果我不再次加载/保存每张地图,它将在稍后中断。 首先要解决的问题是不改变我的技术就很难解决。我曾考虑过改用JSON,但这需要大量工作。我还认为,随处可见的[DataContract]和[DataMember]属性看起来很难看。 这让我有第二个顾虑,我想知道如何处理它?您是否创建了一个循环浏览所有地图并使用新变量重新保存它们的小程序?因为我现在开始获取一些地图,但我仍然手动进行。我每次想做一些更改时都会三思而后行,因为它会带来很多额外的工作。

3
绑带旋转镜
我使用以下代码旋转游戏角色以观看目标: transform.rotation = Quaternion.Slerp(startQuaternion, lookQuaternion, turningNormalizer*turningSpeed/10f) startQuaternion是给定新目标时角色的当前旋转。 lookQuaternion是角色应查看的方向,其设置如下: destinationVector = currentWaypoint.transform.position - transform.position; lookQuaternion = Quaternion.LookRotation(destinationVector, Vector3.up); TurningNormalizer只是Time.deltaTime增加,并且turningSpeed是编辑器中给定的静态值。 问题在于,尽管角色在大多数情况下都应该旋转,但在必须接近180度时仍存在问题。然后它有时会抖动并镜像旋转: 在此绘制效果不佳的图像中,角色(右侧)开始转向左侧的圆圈。不仅仅是左右旋转,它还可以启动“镜舞”: 它开始向新面貌旋转 然后突然突然以相同的角度但在另一侧并继续旋转 它执行此“镜像”的时间很长,直到它看着目标为止。这是带有四元数的东西吗? 编辑1: 显然问题不是由旋转本身引起的。更有可能的问题是,角色在旋转时会朝着面部移动。作为限制角度,当允许角色移动时,面对和目标之间的角度会减少,并且有时会消除抖动/镜像旋转。 这当然引发了更多的问题,为什么角色不能同时没有问题地同时移动和旋转呢?机芯使用的代码: transform.Translate(Vector3.forward * runningSpeed/10f * Time.deltaTime);

2
从Rectangle.Intersects()获取碰撞详细信息
我有一个Breakout游戏,在该游戏中,有时会通过以下方式检测到球和桨之间的碰撞: // Ball class rectangle.Intersects(paddle.Rectangle); 有什么办法可以获取当前碰撞的确切坐标或有关碰撞的任何详细信息XNA API? 我考虑做一些基本的计算,例如比较碰撞时每个物体的精确坐标。它看起来像这样: // Ball class if((rectangle.X - paddle.Rectangle.X) < (paddle.Rectangle.Width / 2)) // Collision happened on the left side else // Collision happened on the right side 但是我不确定这是正确的方法。 你们对我可能要使用的引擎有任何提示吗?甚至使用这种方法的良好编码习惯?

2
服务器端输入
当前在我的游戏中,客户端不过是渲染器。当输入状态更改时,客户端将数据包发送到服务器,并像对待输入一样处理播放器,但是服务器保留最终决定权。 除了一个大问题:掉落边缘,这通常效果很好。基本上,如果玩家正朝着一条边走,比如说一个悬崖,并且在走出边缘之前就停下来了,有时是一秒钟之后,他将被传送到边缘之外。这是因为在服务器处理信息后发送了“我停止按W”数据包。 这是一个滞后图,可以帮助您理解我的意思:http : //i.imgur.com/Prr8K.png 我可以每帧发送一个“ W Pressed”数据包供服务器处理,但这似乎是带宽成本很高的解决方案。 任何帮助表示赞赏!

1
gluLookAt如何工作?
据我了解, gluLookAt( eye_x, eye_y, eye_z, center_x, center_y, center_z, up_x, up_y, up_z ); 等效于: glRotatef(B, 0.0, 0.0, 1.0); glRotatef(A, wx, wy, wz); glTranslatef(-eye_x, -eye_y, -eye_z); 但是当我打印出ModelView矩阵时,对的调用glTranslatef()似乎无法正常工作。这是代码片段: #include <stdlib.h> #include <stdio.h> #include <GL/glut.h> #include <iomanip> #include <iostream> #include <string> using namespace std; static const int Rx = 0; static const int Ry …

1
Xbox指拨杆用于旋转精灵,基本公式使其以90度的间隔“粘”或“粘”!您如何顺利旋转?
我正在使用一个非常基本的公式来计算我的精灵(例如太空船)应基于Xbox控制器指尖所面对的角度,即您使用指尖来旋转飞船。 在我的主要更新方法中: shuttleAngle = (float) Math.Atan2(newGamePadState.ThumbSticks.Right.X, newGamePadState.ThumbSticks.Right.Y); 在我的主要绘制方法中: spriteBatch.Draw(shuttle, shuttleCoords, sourceRectangle, Color.White, shuttleAngle, origin, 1.0f, SpriteEffects.None, 1); 如您所见,它非常简单,我从指尖获取当前弧度并将其存储在浮子中shuttleAngle,然后将其用作旋转角度参数(以弧度为单位)以绘制往复运动。 由于某些原因,当我旋转Sprint时,它在0、90、180和270度的角度感觉发粘。它想以这些角度解决。这并不能像在使用类似机制的游戏中那样给我流畅自然的旋转。PS:我的Xbox控制器很好!
9 xna  c#  sprites  rotation  gamepad 

3
如何分解精灵表
我有很多Spritesheets格式不佳,我想分解它们,或分解成许多小图像,每个Sprites一个。如果可以,我可以使用自定义纹理打包器工具来构建游戏资源。 我的开发工具是针对Windows的XNA和C#。如何分解图像?

2
将Unity游戏移植到Android时的解决问题
因此,我第一次在Unity3D中将游戏移植到Android。在此过程中,我遇到了一些问题。我当前的问题是分辨率似乎不正确,它切断了屏幕的边缘,并且我向左/向右滚动屏幕的滚动停止位置不再正确。 经过大量研究后,许多人说您需要使游戏的分辨率独立,才能在所有Android / Iphone / Ipad上运行。这是真的?如果是这样,我该怎么做?如果没有,如何帮助您解决分辨率问题,以便在移植到移动设备时看起来正确? 编辑:我仍然没有真正需要的东西,即使使用下面列出的代码和技巧,分辨率仍然无法正常工作。我需要一些方法来根据设备调整分辨率。由于某些原因,当我尝试使用Mungoid的代码检索设备的分辨率时,它将返回0x0

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.