zoukankan      html  css  js  c++  java
  • 代理:::走的更远一点实例

      代理不仅是说说道理,更重要的是实际运用。否则有很多细节与零碎容易让人犯浑,下面就学习一下代理的使用。

      1.代理的举例使用,上一节已经讲过代理的声明,下面讲一下他的赋值使用:

    delegate Smart()
    { 
        `log("I'm a smart gy!");
    }
    
    function Stupid()
    {
         `log("I'm a asshole!");
    }
    
    function MakeAChocice()
    {
          Smart=Stupid;    //为代理函数重新赋值
         Smart();   //赋了值然后执行它,结果是I'm a asshole!
           Smart=none;
            Smart();    //结果是I'm a smart gy!
    }

      上述步骤说明了一个道理,近墨者黑,聪明人保持独立人格Smart=none依然会强大,而跟笨蛋在一起就会受其思维影响变得愚蠢。勒庞的《乌合之众》很好的做出了解释。扯远了;)

      代理同样可以当变量一样被检测,上面的函数如果写成这样:

    simulated function PostBeginPlay()
    {
         Smart=Stupid;
         if(Smart==Stupid)
         {
               `log("Yes We Are All Stupid");
         }
    }

      2.实际运用

      以前说到SetTimer(10,true,'DoIt');

      function DoIt(){...}

      而其实SetTimer(10,true);后面不添加函数将会进入function Timer(){...}中,这是十分便利的。

      写一个Mutator,他继承自info用于修改玩家信息和一些全局信息

    class MyMutator extends Mutator;
    
    simulated function PostBeginPlay()
    {
       SetTimer(60,true);
    }
    
    delegate RandomEvent();
    
    function Timer()
    {
        switch(Random(3))
        {
           case 0:
           RandomEvent=killRobert;
           break;
           case 0:
           RandomEvent=killZombie;
           break;
           case 0:
           RandomEvent=killAll;
           break;      
        }
           RandomEvent();   //执行函数,前边只不过赋值,这才是执行逻辑
    }
    
    
    function KillRobert()
    {
    ...
    }
    function KillZombie()
    {
    ...
    }
    function KillAll()
    {
    ...
    }

      

  • 相关阅读:
    Git远程操作
    696. Count Binary Substrings
    693. Binary Number with Alternating Bits
    821. Shortest Distance to a Character
    345. Reverse Vowels of a String
    89. Gray Code
    数组操作符重载
    C++字符串反转
    马克思的两面性-来自网友
    C++字符串
  • 原文地址:https://www.cnblogs.com/NEOCSL/p/2942392.html
Copyright © 2011-2022 走看看