• 1:瞧,这是UE4 C++


      在Unreal Wiki上有一系列进入UE4 C++的文章,其中有一个专题非常有用。标题也很有意思。我们开始UE4 C++之路吧

      1.那么怎么入手学习UE4 C++呢?

      以前我们都是从PlayerController,pawn,Camera开始虚幻之路的,方法其实是传承下来的Wiki建议大家从PlayerController或是Blueprint扩展开始。

      ①Hello怎么world呢?

      ClientMessage("Hello world!");

      很简答不是吗

      2.搞不清. 和->

      有时候我们能看到代码中有两种指向. 和-> what the hell is this mean?

      ->表示该变量是一个数据指向哪里的指针。FVector* LocationPtr;    指针  

      .表示变量时实际的值。例如 Fvector location;    location.X=5;就是直接访问值

       

           LocationPtr=&Location;    //Location这个变量的地址设置成指针LocationPtr;

        LocationPtr->X返回的就是5啦

       再用上面学到的知识来将其输出

      ClientMessage(FString::SanitizeFloat(LocationPtr->X));  

         瞧是不是很简单:)

      总结一下:当你有一个实际的变量就使用.,就像unrealscript和Java等语言中的做法一样。

      当你事用指针的时候,你不确定他是否已经指向了某件东西,你必须得检测一下

      if(!LocationPtr)return;  //那就返回他,因为他没有指向任何东西

      如果向前面设置的那样

      LocationPtr=&location;

      LocationPtr->X;  //这个指针就是这样访问他的变量的

      3.::这是什么鬼玩意?

      这告诉我们一个函数或是变量的域名空间的范围

      UUnrealEdEngine::Init

      这告诉我们这是类UUnrealEdEngine的初始化函数

      Super::Init(InEngineLoop)

      因为上面引擎的Init是虚函数,你必须得访问他的父类函数

      倘若你写了两个类AMyTree和AMyFlower.两个类都有一个获取位置的函数

      FVector GetLocation() const;

      为什么要引入域名空间::这种超级麻烦的东西?因为C++过于底层。你有权利获取Global域名空间,如果在一个类外你仅仅是声明了一个变量或者函数或者结构

      static const FVector MyGlobalVector=FVector(2,4,16);

      FORCEINLINE void MyVeryGlobalFunction();

       {

          //处理...
      }

      那么这些符合将会进入所有域名空间并且被所有读取认识,这对C++的operators非常有用,例如你定义的+,-,*除等运算符。

      但是对于你定义的那些小类,例如AMyTree和AMyFlower将会引起麻烦,如果你不使用::将会让编译器困惑是哪个GetLocation,所以你使用::来告诉编译器

      FVector AMyFlower::GetLocation()const

      {

        //code...
      }

      FVector AMyTree::GetLocation()const

      {

        //code..

      }

      因此如果你不使用域名空间,你讲不得不再你的代码中每一个函数的命名都将是唯一的,如果你没有好的记忆和管理方法,估计这很难做到。

      最后你只需要知道::就是一个简单的标签,告诉你这个函数或是变量属于哪个类的。

      

      

      

      

  • 相关阅读:
    fenby C语言P21
    fenby C语言 P20
    fenby C语言 P19
    fenby C语言 P18
    fenby C语言 P17
    fenby C语言 P16
    fenby C语言 P15
    fenby C语言 P14
    Python学习之路:subprocess模块和面向对象
    Python学习之路:XML模块
  • 原文地址:https://www.cnblogs.com/NEOCSL/p/4008416.html
Copyright © 2020-2023  润新知