使用字符串插值之间是否存在显着的性能差异:
myString += $"{x:x2}";
Run Code Online (Sandbox Code Playgroud)
vs String.Format()?
myString += String.Format("{0:x2}", x);
Run Code Online (Sandbox Code Playgroud)
我只是问,因为Resharper正在提示修复,我之前被愚弄了.
我有一个非常具体和冗长的问题.这个问题是关于编程和游戏理论的.我最近在我的回合制战略游戏中添加了可产卵的矿石:http://imgur.com/gallery/0F5D5Ij (对于那些看起来请原谅开发纹理的人).
现在,谈到我一直在思考的谜.在我的游戏中,每次创建新地图时都会生成矿石.每级创建生成0-8个矿石节点.我已经有了这个工作; 除此之外它只产生"绿宝石",这引出了我的问题.
程序员如何才能使节点具有特殊的稀有性?考虑这个简短的模型,它实际上不是游戏数据:
(Pseudo Chances节点将是以下之一)
Bloodstone 1 in 100
Default(Empty Node) 1 in 10
Copper 1 in 15
Emeraldite 1 in 35
Gold 1 in 50
Heronite 1 in 60
Platinum 1 in 60
Shadownite 1 in 75
Silver 1 in 35
Soranite 1 in 1000
Umbrarite 1 in 1000
Cobalt 1 in 75
Iron 1 in 15
Run Code Online (Sandbox Code Playgroud)
我想做到这一点,理论上,生成的节点可以是上面的任何一个,但是,也考虑了几率.我希望这个问题足够清楚.我一直试图绕过这个,甚至试图用randoms写出一些if语句,但是,我一直空手而归.
基本上,我只是希望你们看到我的问题,并希望能够让我对如何以动态的方式解决这个问题提供一些见解.
如果需要澄清,请询问; 如果这是令人费解的话再次对不起.
(我只是将C#添加为标记,因为这是我用于此项目的语言)
我正在寻找一种用颜色"填充"三维几何体的方法,并且很可能在以后的某个时间使用纹理.
假设您可以将头部物理地移动到混凝土墙中,从逻辑上讲,您只能看到黑暗.但是,在OpenGL中,当您执行此操作时,由于剔除以及绘制几何图形的方式,世界自然是空心透明的.我想在其中模拟黑暗/颜色/纹理.
我知道有些游戏通过在hud上直接覆盖纹理/颜色来做到这一点 - 因此让玩家眼花缭乱.
有没有另外一种方法可以做到这一点?假设玩家站在水中一半; 他们可以部分地看到海浪下面.如何填写它以防止他们能够清楚地看到现在屏幕的一半?
甚至这个概念叫什么?
在输入多行注释时,当我按下回车键时,Visual Studio用于为注释的每个新行添加一个自动星号(显然2015年不再这样做了).我真的很喜欢这个.截至目前,如果我输入"/*"并输入,Visual Studio根本不会尝试自动完成它.事实上,它甚至让我也结束了评论"*/",而不是为我做这件事.所以我的问题是:是否还有其他人遇到这种情况?如何恢复原始功能,因此每个新行自动以星号为前缀,并为我关闭"*/"?
我已经检查过,是的,我的环境设置被设置为C#,是的,确实在我的设置中选中了"为///生成XML文档注释"选项.
在编码之前我注意到有关SHA256的一些奇怪之处,因为它似乎比哈希的字母产生更多的整数.起初我以为我只是想象它,所以我做了一个快速测试以确保.令人惊讶的是,我的测试似乎证明SHA256支持它生成的哈希值中的整数值.我想知道为什么会这样.哈希索引是一个字母和一个数字之间的差异应该是完全相同的吗?这是我的测试示例:
namespace TestingApp
{
static class Program
{
private static string letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
private static char[] characters = letters.ToCharArray();
private static Random _rng = new Random();
static void Main(string[] args)
{
int totalIntegers = 0;
int totalLetters = 0;
for (int testingIntervals = 0; testingIntervals < 3000; testingIntervals++)
{
string randomString = NextString(10);
string checksum = DreamforceChecksum.GenerateSHA256(randomString);
int integerCount = checksum.Count(Char.IsDigit);
int letterCount = checksum.Count(Char.IsLetter);
Console.WriteLine("String: " + randomString);
Console.WriteLine("Checksum: " + checksum);
Console.WriteLine("Integers: " + integerCount);
Console.WriteLine("Letters: " …Run Code Online (Sandbox Code Playgroud) 我只是想知道在编译过程中是否使用?:运算符的简单静态函数.这是使用代码的任意示例.
public static int Max(int value, int max)
{
return value > max ? max : value;
}
Run Code Online (Sandbox Code Playgroud)
这给出了以下IL:
Max:
IL_0000: nop
IL_0001: ldarg.0
IL_0002: ldarg.1
IL_0003: bgt.s IL_0008
IL_0005: ldarg.0
IL_0006: br.s IL_0009
IL_0008: ldarg.1
IL_0009: stloc.0
IL_000A: br.s IL_000C
IL_000C: ldloc.0
IL_000D: ret
Run Code Online (Sandbox Code Playgroud)
或者更简单的替代方案是内联的吗?
public static int Max(int value, int max)
{
if (value > max)
{
return max;
}
else
{
return value;
}
}
Run Code Online (Sandbox Code Playgroud)
这是它的IL:
Max:
IL_0000: nop
IL_0001: ldarg.0
IL_0002: ldarg.1
IL_0003: cgt
IL_0005: stloc.0 …Run Code Online (Sandbox Code Playgroud) 我刚刚在我的体素游戏中加入了截头剔除; 乍一看它效果很好.然而,我立即注意到,在完全脱离视觉范围之前,视窗的边缘附近的某些体素过早地被切断,所以视锥体似乎有点偏离.这是一张图片,展示了我的努力:

以下是解决此问题可能需要的三个类.
我的FrustumWidget类:
using System;
using OpenTK;
namespace GameProject.Game.Client.Widgets {
public class FrustumWidget {
private float[] _clipMatrix = new float[ 16 ];
private float[ , ] _frustum = new float[ 6 , 4 ];
const int RIGHT = 0 , LEFT = 1 , BOTTOM = 2 , TOP = 3 , BACK = 4 , FRONT = 5;
private void NormalizePlane( float[ , ] frustum , int side ) {
float magnitude = ( …Run Code Online (Sandbox Code Playgroud) 所以我刚刚升级到Visual Studio 2017,果然我遇到了一些问题.最近的一个是XAML设计师拒绝显示彩色语法高亮显示.这是一张图片:
我尝试通过工具 - >导入和导出设置 - >重置所有设置重置我的设置.但是,这只会重置我的布局.还有其他人遇到过这种情况吗?我该如何解决?
封装方法是否有性能成本?一个非常简短,随意的例子:
public static decimal Floor(decimal value)
{
return Math.Floor(value);
}
Run Code Online (Sandbox Code Playgroud)
上面的函数会被内联吗?如果是这样,它会与从代码中调用Math.Floor()完全相同吗?在写这篇文章之前我做了谷歌.
安装Visual Studio 2017后,我注意到我的定向图标记语言(.dgml)文件无法再在可视化设计器中打开进行编辑; 它只会打开以查看文件的内部格式.有谁知道我怎么解决这个问题?Visual Studio 2017不再支持.DGML吗?
如果有些人不知道这是什么,这是一张图片:
这是我的.dgml文件,它在Visual Studio 2015中被识别并加载而没有任何问题.
c# ×8
algorithm ×1
dgml ×1
hash ×1
inline-code ×1
jit ×1
opengl ×1
opentk ×1
performance ×1
probability ×1
resharper ×1
sha256 ×1
string ×1
xaml ×1