我对如何在游戏中实现重播感到好奇.
最初,我认为只会有一个游戏中所有玩家/动作的命令列表,然后它"重新玩"游戏并让引擎像往常一样渲染.但是,我已经看过FPS/RTS游戏中的重放,经过仔细检查,即使粒子和图形/听觉故障等内容也是一致的(这些故障通常是一致的).
那么这是怎么发生的呢.在固定摄像机角度游戏中,我可能只是将整个场景的每一帧写入存储的流然后只是重放流回来,但这对于允许您暂停和移动摄像机的游戏来说似乎不够周围.您必须在所有时间点存储场景中所有内容的位置(否?).因此对于像粒子这样的东西来说,这是推送的大量数据,这似乎是对游戏性能的重要影响.
简单问题:我创建了一个小应用程序,它基本上只是我系统托盘中的收藏夹,以便我可以从同一个地方打开常用的站点/文件夹/文件.从我的系统获取已知文件类型的默认图标并不是非常复杂,但我不知道如何从网站获取favicon.(例如,SO在地址栏中有灰色 - >橙色堆栈图标)
有谁知道我会怎么做?
有没有人知道如何更改StyleCop规则SA1600,说明必须记录元素,以便它只适用于属性而不适用于私有成员?
我们的ORM(DevExpress XPO)要求您拥有所有公共属性的私有成员(因为您必须在setter中调用一个函数来保存它并将其存储在私有成员中),并对公共属性和私有属性进行注释.考虑到一些表有超过50个字段,同样的事情的成员正在杀了我.
考虑到我们都在不断学习,我们都必须遇到一个问题,即我们学到的东西非常棒,可以显着改善我们的代码或部分代码.
问题是,当你学会了一些新的技术,策略或其他什么时,你或者你应该回到你知道有效的代码,但是可以更好/可维护/更快/ 一般改进并实现这些新知识吗?
我理解"如果它没有被破坏,不要修复它"的概念,但是什么时候会失去你已经编写过的代码的骄傲,以及它对于重构的意义.
有没有人知道一个适用于.NET 4/EF 4的良好内存数据库?具体来说,我正在考虑单元测试,这样每个设置都可以轻松创建数据库,并使用默认值填充它,每次拆卸都可以快速破坏它.
我听说SQLite 还不支持.NET 4,其他人在使用它作为SQLServer的替代品时遇到了麻烦(这是应用程序将在发布模式下运行的).
在过去,我使用了DevExpress XPO ORM,它有一个内置的内存数据库,可以很好地进行单元测试.
很简单:我希望做的一样本,但WinForms的.谷歌似乎拔出来的一切都是特定的wpf(即我不想引用presentationframework.dll)
如果您不想阅读链接,请说明:
以下是我想要做的意图的表示,虽然它显然不起作用.
CheckBox1.DataBindings.Add(new Binding("Checked", this.object, "!SomeBool"));
Run Code Online (Sandbox Code Playgroud) 我正在尝试将通用对象列表存储在通用列表中,但我很难声明它.我的对象看起来像:
public class Field<T>
{
public string Name { get; set; }
public string Description { get; set; }
public T Value { get; set; }
/*
...
*/
}
Run Code Online (Sandbox Code Playgroud)
我想创建一个这样的列表.我的问题是列表中的每个对象都可以有一个单独的类型,因此填充的列表可能包含这样的内容:
{ Field<DateTime>, Field<int>, Field<double>, Field<DateTime> }
Run Code Online (Sandbox Code Playgroud)
那么我该怎么宣布呢?
List<Field<?>>
Run Code Online (Sandbox Code Playgroud)
(我希望尽可能保持类型安全,所以我不想使用ArrayList).
我一直在经历Head First Design Patterns(最近刚刚进入)并且我正在阅读关于策略模式的内容,我想到它可能是一种很好的方式来实现计算税收等的常用方法.我在工作中使用的特定对象,但我有一个问题.
这就是我的想法:
public interface ITax
{
decimal ProvincialTaxRate { get; set; } // Yes, I'm Canadian :)
decimal CalculateTax(decimal subtotal);
}
public SaskatchewanTax
{
public decimal ProvincialTaxRate { get; set; }
public SaskatchewanTax()
{
ProvincialTaxRate = new decimal(0.05f);
}
public decimal CalculateTax(subtotal)
{
return ProvincialTaxRate * subtotal + FederalTaxRate * subtotal;
}
}
public OntarioTax
{
public decimal ProvincialTaxRate { get; set; }
public OntarioTax()
{
ProvincialTaxRate = new decimal(0.08f);
}
public decimal CalculateTax(decimal subtotal)
{
return …
Run Code Online (Sandbox Code Playgroud) 我有这样的界面:
public interface IDocument : ISerializable
{
Boolean HasBeenUploaded { get; set; }
void ISerializable.GetObjectData(SerializationInfo, StreamingContext) { }
}
Run Code Online (Sandbox Code Playgroud)
有三个文件继承自此,所有这些文件序列化都很好.但是在创建一个简单的Web服务时,它什么都不做,可以将它们上传到...
public class DCService : System.Web.Services.WebService
{
[WebMethod]
public Boolean ReceiveDocument(IDocument document)
{
DBIO io = new DBIO();
return io.InsertIntoDB(document); // does nothing; just returns true
}
}
Run Code Online (Sandbox Code Playgroud)
我试图运行它时得到这个:"无法序列化接口IDocument"
我不太清楚为什么这会成为一个问题.我知道有些人遇到了麻烦,因为他们不想强制子类来实现自定义序列化,但我确实如此,到目前为止它已经成功了.
编辑>如果我创建接受实现接口的对象的单个web方法,它工作正常,但这削弱了客户端/服务器之间的合同(并破坏了首先拥有接口的目的)
我有这样的查询:
update table
set status = 1
where status = 2;
Run Code Online (Sandbox Code Playgroud)
但我只想这样做到前400名.我尝试添加'限制0,400'(就像我在查询中一样),但这不起作用.我做了一些搜索,mysql似乎不像sql server那样支持TOP(n)命令.
知道我是怎么做的吗?
编辑:为了将来参考,我使用以下样式进行选择,工作正常:
select *
from table
where ... limit 0, 400;
Run Code Online (Sandbox Code Playgroud)
但是在更新中,无论出于何种原因它都无法使用"0".我会考虑这种不一致和模棱两可的行为,但是哦.
c# ×5
.net-4.0 ×2
.net-3.5 ×1
data-binding ×1
favicon ×1
generics ×1
interface ×1
mysql ×1
refactoring ×1
sql ×1
sql-update ×1
stylecop ×1
web-services ×1
winforms ×1