目前我有一系列与游戏相关的三个课程.我以前使用Unity制作游戏,您可以使用所有代码都可访问的功能访问相机等组件.但是,我当前的设置依赖于跨越其他类发送的每个类的实例.请参阅以下内容:
class World{
};
class Game{
Camera* camera;
World* world;
};
class Camera{
Game* game;
World* world;
};
Run Code Online (Sandbox Code Playgroud)
这是设计糟糕的结果还是有时这样的设置是合理的?
我是否应该在当前设置中使用静态类,因为它会澄清代码并且每个类的实例只使用一次?
在实例上使用静态类有哪些可能的缺点?
编辑:为什么他们需要互相访问.
为什么相机需要世界:相机需要访问世界,因为世界需要从相机的角度进行渲染.相机会根据所看到的内容触发世界渲染.渲染是通过相机中的各种方法触发的,例如移动时.
当绘制相机时,它会绘制它所看到的内容,例如世界.为了绘制世界,相机需要进入世界.
为什么相机需要游戏:游戏具有诸如FPS之类的值,相机使用它来显示调试信息的叠加.
我有一个资源字典包含程序控件的所有自定义样式.Dictionary与应用程序的资源合并,如下所示:
<ResourceDictionary x:Key="Controls">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Controls.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)
我可以通过xaml轻松访问不同的样式:
<Button Style="{StaticResource Button}" />
Run Code Online (Sandbox Code Playgroud)
但每当我尝试通过代码使用此样式分配控件时,它都会失败.
我试过了:
Button.Style = Application.Current.Resources("Button")
Button.Style = CType(Application.Current.Resources("Button"), Style)
Run Code Online (Sandbox Code Playgroud)
以及与上述类似的不同方法.在测试一些获得样式的不同方法时,我遇到了"未找到资源",但在使用上述方法时,程序似乎找到了样式.我可以成功运行该程序 - 但没有任何视觉证据确实应用了该样式.
如何正确地为控件分配资源字典中找到的样式?
我想将一个字符串(句子)拆分为单词数组并保留分隔符。
我发现并且目前正在使用这个正则表达式:
[^.!?\s][^.!?]*(?:[.!?](?!['"]?\s|$)[^.!?]*)*[.!?]?['"]?(?=\s|$)
可以在这里找到解释: http: //regex101.com/
这完全按照我想要的方式工作,并且有效地生成了一个像这样的字符串
This is a sentence.
到一个数组
["This", "is", "a", "sentence."]
这里的问题是它不包含空格或换行符。我希望字符串像以前一样被解析为单词,但我也希望相应的空格和/或换行符属于前一个单词。
我读过关于积极的前瞻,应该寻找未来的字符(空格和/或换行符),但在提取单词时仍然考虑它们。尽管这可能是解决方案,但我未能实施它。
如果有什么区别的话,我正在使用 JavaScript 和以下代码:
//save the regex -- g modifier to get all matches
var reg = /[^.!?\s][^.!?]*(?:[.!?](?!['"]?\s|$)[^.!?]*)*[.!?]?['"]?(?=\s|$)/g;
//define variable for holding matches
var matches;
//loop through each match
while(matches = reg.exec(STRING_HERE)){
//the word without spaces or newlines
console.log(matches[0]);
}
Run Code Online (Sandbox Code Playgroud)
该代码有效,但正如我所说,它不包含空格和换行符。