小编Kry*_*hic的帖子

String Interpolation vs String.Format

使用字符串插值之间是否存在显着的性能差异:

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正在提示修复,我之前被愚弄了.

c# string resharper performance string-interpolation

92
推荐指数
5
解决办法
3万
查看次数

游戏设计/理论,Loot Drop Chance/Spawn Rate

我有一个非常具体和冗长的问题.这个问题是关于编程和游戏理论的.我最近在我的回合制战略游戏中添加了可产卵的矿石: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#添加为标记,因为这是我用于此项目的语言)

c# probability

22
推荐指数
3
解决办法
8045
查看次数

OpenGL/OpenTK填充室内空间

我正在寻找一种用颜色"填充"三维几何体的方法,并且很可能在以后的某个时间使用纹理.

假设您可以将头部物理地移动到混凝土墙中,从逻辑上讲,您只能看到黑暗.但是,在OpenGL中,当您执行此操作时,由于剔除以及绘制几何图形的方式,世界自然是空心透明的.我想在其中模拟黑暗/颜色/纹理.

我知道有些游戏通过在hud上直接覆盖纹理/颜色来做到这一点 - 因此让玩家眼花缭乱.

有没有另外一种方法可以做到这一点?假设玩家站在水中一半; 他们可以部分地看到海浪下面.如何填写它以防止他们能够清楚地看到现在屏幕的一半?

甚至这个概念叫什么?

opengl

20
推荐指数
1
解决办法
427
查看次数

Visual Studio 2015不会自动为多行注释添加星号

在输入多行注释时,当我按下回车键时,Visual Studio用于为注释的每个新行添加一个自动星号(显然2015年不再这样做了).我真的很喜欢这个.截至目前,如果我输入"/*"并输入,Visual Studio根本不会尝试自动完成它.事实上,它甚至让我也结束了评论"*/",而不是为我做这件事.所以我的问题是:是否还有其他人遇到这种情况?如何恢复原始功能,因此每个新行自动以星号为前缀,并为我关闭"*/"

我已经检查过,是的,我的环境设置被设置为C#,是的,确实在我的设置中选中了"为///生成XML文档注释"选项.

c# code-generation visual-studio-2015

19
推荐指数
2
解决办法
1907
查看次数

SHA256是否支持整数?

在编码之前我注意到有关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)

c# algorithm hash sha256

7
推荐指数
1
解决办法
808
查看次数

在JIT编译期间是否使用?:运算符内联的方法?

我只是想知道在编译过程中是否使用?:运算符的简单静态函数.这是使用代码的任意示例.

    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)

c# jit inline-code

7
推荐指数
1
解决办法
188
查看次数

OpenTK/OpenGL Frustum剔除剪辑太快了

我刚刚在我的体素游戏中加入了截头剔除; 乍一看它效果很好.然而,我立即注意到,在完全脱离视觉范围之前,视窗的边缘附近的某些体素过早地被切断,所以视锥体似乎有点偏离.这是一张图片,展示了我的努力:

Frustum Glitch

以下是解决此问题可能需要的三个类.

我的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)

c# opentk

5
推荐指数
1
解决办法
1480
查看次数

Visual Studio 2017 XAML设计器没有语法突出显示

所以我刚刚升级到Visual Studio 2017,果然我遇到了一些问题.最近的一个是XAML设计师拒绝显示彩色语法高亮显示.这是一张图片:

在此输入图像描述

我尝试通过工具 - >导入和导出设置 - >重置所有设置重置我的设置.但是,这只会重置我的布局.还有其他人遇到过这种情况吗?我该如何解决?

c# xaml syntax-highlighting visual-studio-2017

5
推荐指数
1
解决办法
1196
查看次数

方法封装的性能成本

封装方法是否有性能成本?一个非常简短,随意的例子:

        public static decimal Floor(decimal value)
        {
            return Math.Floor(value);
        }
Run Code Online (Sandbox Code Playgroud)

上面的函数会被内联吗?如果是这样,它会与从代码中调用Math.Floor()完全相同吗?在写这篇文章之前我做了谷歌.

c#

4
推荐指数
1
解决办法
313
查看次数

Visual Studio 2017不再能识别定向图标记语言

安装Visual Studio 2017后,我注意到我的定向图标记语言(.dgml)文件无法再在可视化设计器中打开进行编辑; 它只会打开以查看文件的内部格式.有谁知道我怎么解决这个问题?Visual Studio 2017不再支持.DGML吗?

如果有些人不知道这是什么,这是一张图片:

在此输入图像描述

这是我的.dgml文件,它在Visual Studio 2015中被识别并加载而没有任何问题.

https://pastebin.com/xaYsiyzm

dgml visual-studio-2017

4
推荐指数
1
解决办法
1288
查看次数