Articles of 结构

创建实体时的循环依赖

我有以下问题: 我有一个名为Stage的类,它保存了一个实体列表,它遍历每个更新循环,并更新它们。 其中一个实体可能是一个武器(PEW PEW!),当更新产生新的实体时(射弹,KA-ZOOM,KER BANG!)。 如何将这些新实体添加到Stage中实体的列表中? 目前,我把Stage作为一个具有全局访问权限的单例,所以那些反过来派生实体的实体只是调用Stage的addEntity方法的实例,但是这样做感觉很愚蠢。 舞台 – >实体(武器) – >再次登台? 创建敌人时我有类似的问题: 舞台 – >实体(敌波) – >再次登台 我一直在考虑将List传递到可以创建其他实体的所有实体,但是我不得不改变基本实体类的更新方法,以便它获取这个列表,大多数实体不需要。 此外,在向舞台添加实体时,必须让舞台知道该实体的许多graphics组件,以便Stage能够告诉渲染器(具有OpenGL上下文)为这些graphics加载合适的资源组件。 任何想法我应该做什么? 我现在做错了吗? 而且,当我们在这时,为什么Singletons如此皱眉?

几何结构和glDrawElements

目前我重新写我的代码,并改变他们,使他们更好。 我有这样的顶点结构: struct SVertex { float X, Y, Z; }; struct STexCoord { float U, V; }; 我重新写这样的 struct SVertex { int Flag, BoneID; float Pos[3]; float UV[2]; }; 当涉及到渲染function,我只需要改变它: glVertexPointer(3, GL_FLOAT, 0, &(Mesh[i].Vertex[0])); glTexCoordPointer(2, GL_FLOAT, 0, &(Mesh[i].TexCoord[0])); 至: glVertexPointer(3, GL_FLOAT, sizeof (SVertex), &(Mesh[i].Vertex[0].Pos)); glTexCoordPointer(2, GL_FLOAT, sizeof (SVertex), &(Mesh[i].Vertex[0].UV)); 问题来自三角形结构。 我重新写了三角形 struct STriangle { int […]

InputField文本stringvariables的结构

所以,这是我的问题。 我有一个包含结构的类。 该结构包含大约7个不同的stringvariables。 我可以通过一个构造函数来设置这些variables的值,该构造函数接受结构variables并将它们与具有实际值的持有variables分开。 但是,我有问题,得到这些价值观。 我需要从7个不同的InputFields中检索它们。 我已经试过这样做了。 我结束了一些没有值的variables和一些具有相同的值。 我如何检索不同InputFields的文本值并将它们传递给7个不同的持有者variables,这些variables将设置结构variables的值? 下面是我尝试的第一种方法,这只会导致Age实际上有一个值(注意,我有debugging日志来检查任务,我没有任何被认为是不必要的东西,比如debugging日志和方法,这些与问题无关。 )。 我也将Collect()方法设置为一个button,所以当button被按下时,它将收集数据。 我也试着用开关箱replace所有的if语句,得到相同的结果。 作为进一步尝试,我为所有types设置Get方法,并将它们附加到InputFields本身,以使它们将field.text返回给variables。 这导致了上述问题,有些人没有价值,有些人与Age有相同的价值。 using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; namespace Handlers { public class EventHandler : MonoBehaviour { InputField field; public static string f_name; public static string l_name; public static string p_age; public […]

寻找交叉点时如何处理平行线?

我正在使用以下方法来确定两个vector2的交点: public static Vector2 LineIntersectionPoint(Vector2 startPoint1, Vector2 endPoint1, Vector2 startPoint2, Vector2 endPoint2) { // Get A,B,C of first line – points : startPoint1 to endPoint1 float A1 = endPoint1.y – startPoint1.y; float B1 = startPoint1.x – endPoint1.x; float C1 = A1 * startPoint1.x + B1 * startPoint1.y; // Get A,B,C of second line – points […]

为什么顶点和像素着色器之间的结构成员顺序必须颠倒?

这在过去两天里一直让我疯狂,但是终于可以工作了,但是我真的不明白为什么struct成员的顺序应该颠倒过来。 为什么PS_INPUT成员必须与VS_INPUT相比才能使该着色器正常工作? Texture2D<float4> Texture; SamplerState linearSampler { Filter = MIN_MAG_MIP_LINEAR; AddressU = Wrap; AddressV = Wrap; }; // A constant buffer that stores the three basic column-major matrices for composing geometry. cbuffer ModelViewProjectionConstantBuffer : register(b0) { matrix model; matrix view; matrix projection; }; struct VS_INPUT { float4 Position : SV_Position; float4 Color : COLOR0; float2 […]

C + +类无效指针,数据丢失?

再次伸出一个正确的方向点。 具体来说,我将一个简单的结构投射到一个void指针,以便它可以在networking上发送出去,但是由于我不了解的原因,它正在切断我的第二个variables。 我很可能正在寻找它,但咖啡因的显着缺乏隐藏了我的答案。 我发现了一些类似的线程,特别是这一个 ,这是一个很大的帮助。 我有理由相信这是一个“新手错误”,或者我简单地忽略了一些事情。 像大多数技术人员一样,我已经迷失了方向,寻找“大”的答案,我很可能忽视了“小”的答案(即“你是否先插入?”)。 任何input是赞赏,所以提前谢谢你! /* struct provided */ struct Login_Struct { /*000*/ char username[32]; /*032*/ char password[64]; /*096*/ }; void NetWrapper::sendLogin(std::string user, std::string pass) { // ensure size constraints are met if( user.length() > sizeof(Login_Struct::username)-1 || pass.length() > sizeof(Login_Struct::password)-1) { return; } std::string hashPass = Security::strSHA256(pass); // returns hashed password Login_Struct […]

是使用C#replace生成垃圾的类中的结构域?

我有点意识到类和结构之间的差异,当每个堆在堆上分配时,调用方法时会发生什么。 据我所知,一个类中struct字段的内存位于堆上,因为它是类的一部分。 当结构被replace为新实例时会发生什么? 旧实例指向的堆区域中的内容是否简单replace为新实例的内容? 或者旧的实例的内存是针对垃圾回收的,而新的实例会得到一些新的内存? struct Vector2 { … } class Player { public Vector2 Position; … } void Main // Whatever { var player = new Player(); player.Position = new Vector2(); // <— Will this cause garbage collection? }

如何正确填写/初始化D3D11_SAMPLER_DESC?

如果我想明确地设置结构的每个参数,我只是这样做,就是这样。 但是,如果我只想设置其中的一部分并将其余部分保留为默认值呢? 我已经在一些教程中看到零结构: ZeroMemory(&samplerDesc, sizeof(D3D11_SAMPLER_DESC)); 但默认值( http://msdn.microsoft.com/en-us/library/windows/desktop/ff476207%28v=vs.85%29.aspx )并不总是0.这是不正确的? 我应该总是明确指定所有的值(特别是LOD值似乎棘手)? 我在问D3D11_SAMPLER_DESC但是其他DX结构可能也适用相同的规则?

正确的物理模拟每个帧的任务顺序

我正在玩二维物理。 我现在创造了一些应该相互碰撞的物理块。 这很好,“主要”工作正常,但有时其中一个块不会对碰撞做出反应,我认为这是因为我在每个框架中完成的任务顺序。 目前看起来像这样: function GameFrame(){ foreach physicObject do AddVelocityToPosition(); DoCollisionStuff(); // Only for this object not to forget! AddGravitationToVelocity(); end RedrawScene(); } 这是每个框架中任务的正确顺序吗?

你如何组织你的游戏文件和类?

尽管没有必要排除graphics和audio包之类的东西,但我最感兴趣的是组织处理AI和游戏状态的类文件夹。 我在Java中使用包来思考类似这样的东西: import com.rpg.characters; import com.rpg.characters.antagonist; import com.rpg.characters.neutral; import com.rpg.characters.protagonist; import com.rpg.characters.state; import com.rpg.gameplay; import com.rpg.gameplay.engine; import com.rpg.gameplay.maps; import com.rpg.weapons; 另外,它是否会在2D游戏和3D游戏之间造成巨大差异?