我已经为此工作了很长时间,但是不幸的是,我根本没有进步。我正在Unity中创建一个个性测验,其中每个问题都有选择,其中取决于每个选择的特定变量的价值正在增加。测验试图根据用户的性格显示用户的前5个最佳拟合模式(这是具有最高价值的变量)。根据检查员在单击中单击的选择/按钮,可以调用公共空隙。
squeue -u mnyber004 -p ada --format "scancel %j" > /tmp/remove.sh
source remove.sh
总共有26种模式,但与此同时,我只想对两个变量进行排序,即蛇和the。我已经搜索了有关对变量进行排序的教程,并且有很短的方法和很长的方法。但是无论哪种方式,我都很难理解它并将其应用到我的代码中。在一种方法中,需要使用另一个公共static void或static int进行排序,但是令我感到困惑的是,我如何才能在另一个公共void中调用它,当按钮被按下时将被调用并完成。单击,在代码中尝试后将无法执行。 (此外,公共静态空无法识别类中已经声明的变量,这是一个大问题。)我曾考虑过在检查器中可以看到的单击按钮时分别调用静态空,但这可能是因为是静态空虚,我无法在选项中找到它。
这是我无法在检查器中调用static int SortByScore的代码。
public class QuizScript : MonoBehaviour {
public int snake = 0;
public int centipede = 0;
public void Q2C1() //question 2 choice 1
{
snake = snake + 1;
Debug.Log("Snake = " + snake); //for me to see if it works
}
public void Q3C1() //question 3 choice 1
{
centipede = centipede + 1;
Debug.Log("Centipede = " + centipede);
}
}
非常感谢您的帮助。 :)
答案 0 :(得分:2)
我会考虑使用某种Dictionary
类型来实现这一目标。
您想要一个绑定在一起的值列表,因此您需要适当的数据类型才能做到这一点。在我建议的解决方案中,我们使用enum
根据测验的结果做出强类型,并使用Dictionary
(这是键值表)将它们绑在一起,您可以然后使用LINQ对这些命令进行排序以获得结果。
public class QuizScript : MonoBehavior {
public Dictionary<Outcome, int> Outcomes = new Dictionary<Outcome, int>() {
{ Outcome.Snake, 0 },
{ Outcome.Centipede, 0 }
};
public void Q2C1() {
Outcomes[Outcome.Snake]++;
Debug.Log("Snake: " + Outcomes[Outcome.Snake]);
}
public void Q3C1() {
Outcomes[Outcome.Centipede]++;
Debug.Log("Centipede: " + Outcomes[Outcome.Centipede]);
}
public Outcome GetHighestOutcome() {
// Order by the 'key' of the dictionary, i.e. the number we tied to the outcome
return Outcomes.OrderByDescending(choice => choice.Value).FirstOrDefault().Key;
}
}
public enum Outcome {
Snake,
Centipede
}
在OP的额外要求下,您可以进行排序,然后按以下方式获得热门商品:
public List<Outcome> GetHighestOutcome() {
// Order by the 'key' of the dictionary, i.e. the number we tied to the outcome
var maxValue = Outcomes.OrderByDescending(choice => choice.Value).FirstOrDefault().Value;
var kvPairs = Outcomes.Find(kv => kv.Value == maxValue);
return kvPairs.Select(kv => kv.Key).ToList();
}
答案 1 :(得分:1)
我认为您的策略正在逐步发展。这是一个很好的示例,您最好将值存储在Begin emission:
Finished sending 1 packets.
.....................................................................
或HashSet
中。
如果您改用Dictionary,这就是代码的样子:
Dictionary
答案 2 :(得分:0)
在项目结束时您的目标是什么?您要按从大到小的顺序显示变量吗?如果是这样,您可以将所有变量加载到数组中,然后让该数组为您进行排序。 Array类具有Sort()函数!
例如,您可以在其他变量声明下有一个int变量数组,然后可以将所有变量加载到该数组中:
variableArray = {snake, centipede, ...} //the rest of your variables
然后,使用Array类的Sort函数为您对其进行排序。了解如何声明数组以及如何使用Array的Sort函数,您应该都准备就绪。
祝你好运!