• ue4 打个log难如狗


    注意:

    把log相关两个宏写到类中,并编译后,在输出日志的位置的Categories关键字过滤的位置看不到自己的标签是因为需要先运行一次,输出一些这个标签的log后,这个自定义的标签才会显示在这




    原文 https://wiki.unrealengine.com/Logs,_Printing_Messages_To_Yourself_During_Runtime#Log_an_FString


    http://www.cnblogs.com/blueroses/p/6037981.html

    说明:本文为Wiki上的RAMA大神文章的大致翻译

    游戏模式:

    在游戏模式下,你需要在游戏的快捷方式后面加 -Log,才会在游戏中显示。

     

    编辑器模式(Play In Editor):

    你可以在Output窗口中看到log信息。

    如果想在游戏中看到,需要到Engin.ini中修改参数添加"GameCommandLine=-log,如果没有,则需要按~,输入-Log命令开启。

     

    快速使用:

    UE_LOG(LogTemp, Warning, TEXT("Your message"));

    不用设置标签,简单快速。

     

    设置拥有自己标签的Log:

    在你的游戏头文件中加入:

    复制代码
    //General Log
    DECLARE_LOG_CATEGORY_EXTERN(YourLog, Log, All);
     
    //Logging during game startup
    DECLARE_LOG_CATEGORY_EXTERN(YourInit, Log, All);
     
    //Logging for your AI system
    DECLARE_LOG_CATEGORY_EXTERN(YourAI, Log, All);
     
    //Logging for Critical Errors that must always be addressed
    DECLARE_LOG_CATEGORY_EXTERN(YourCriticalErrors, Log, All);
    复制代码

    这样输出的Log你就可以知道是哪个部分的,这也是UE_Log很有用的原因。

    在你的游戏Cpp文件中:

    复制代码
    //General Log
    DEFINE_LOG_CATEGORY(YourLog);
     
    //Logging during game startup
    DEFINE_LOG_CATEGORY(YourInit);
     
    //Logging for your AI system
    DEFINE_LOG_CATEGORY(YourAI);
     
    //Logging for Critical Errors that must always be addressed
    DEFINE_LOG_CATEGORY(YourCriticalErrors);
    复制代码

     

    Log格式:

    Log Message

    //"This is a message to yourself during runtime!"
    UE_LOG(YourLog,Warning,TEXT("This is a message to yourself during runtime!"));

    Log an FString

     %s strings are wanted as TCHAR* by Log, so use *FString()
    //"MyCharacter's Name is %s"
    UE_LOG(YourLog,Warning,TEXT("MyCharacter's Name is %s"), *MyCharacter->GetName() );

    Log an Int

    //"MyCharacter's Health is %d"
    UE_LOG(YourLog,Warning,TEXT("MyCharacter's Health is %d"), MyCharacter->Health );

    Log a Float

    //"MyCharacter's Health is %f"
    UE_LOG(YourLog,Warning,TEXT("MyCharacter's Health is %f"), MyCharacter->Health );

    Log an FVector

    //"MyCharacter's Location is %s"
    UE_LOG(YourLog,Warning,TEXT("MyCharacter's Location is %s"), 
        *MyCharacter->GetActorLocation().ToString());

    Log an FName

    //"MyCharacter's FName is %s"
    UE_LOG(YourLog,Warning,TEXT("MyCharacter's FName is %s"), 
        *MyCharacter->GetFName().ToString());

    Log an FString,Int,Float

    //"%s has health %d, which is %f percent of total health"
    UE_LOG(YourLog,Warning,TEXT("%s has health %d, which is %f percent of total health"),
        *MyCharacter->GetName(), MyCharacter->Health, MyCharacter->HealthPercent);

    Log的颜色设置:

    //"this is Grey Text"
    UE_LOG(YourLog,Log,TEXT("This is grey text!"));
    //"this is Yellow Text"
    UE_LOG(YourLog,Warning,TEXT("This is yellow text!"));
    //"This is Red Text"
    UE_LOG(YourLog,Error,TEXT("This is red text!"));

    可以看得出第二个参数是是用来控制颜色的。

     

    传递客户端信息(网络模式):

    PlayerController->ClientMessage("Your Message");

    命令行命令以及Engine.ini配置:

    Log conventions (in the console, ini files, or environment variables)

    [cat] = a category for the command to operate on, or 'global' for all categories.
    标签,没有设置就显示所有的Log
    [level] = verbosity level, one of: none, error, warning, display, log, verbose, all, default
    关卡,显示某某关卡的Log

    At boot time, compiled in default is overridden by ini files setting, which is overridden by command line

    Log console command usage

    复制代码
    Log list - list all log categories
    Log list [string] - list all log categories containing a substring
    Log reset - reset all log categories to their boot-time default
    Log [cat] - toggle the display of the category [cat]
    Log [cat] off - disable display of the category [cat]
    Log [cat] on - resume display of the category [cat]
    Log [cat] [level] - set the verbosity level of the category [cat]
    Log [cat] break - toggle the debug break on display of the category [cat]
    复制代码

    Log command line

    -LogCmds="[arguments],[arguments]..."           - applies a list of console commands at boot time
    -LogCmds="foo verbose, bar off"         - turns on the foo category and turns off the bar category

    Environment variables

    Any command line option can be set via the environment variable UE-CmdLineArgs

    set UE-CmdLineArgs="-LogCmds=foo verbose breakon, bar off"

    Config file

    In DefaultEngine.ini or Engine.ini:

    [Core.Log]
    global=[default verbosity for things not listed later]
    [cat]=[level]
    foo=verbose break
    Rama后面的一篇文章提供了显示代码行号、函数名称、类名等功能:
    https://wiki.unrealengine.com/Logs,_Printing_the_Class_Name,_Function_Name,_Line_Number_of_your_Calling_Code!
  • 相关阅读:
    对MVC模式与MVVM模式的认识
    优雅降级和渐进增强
    入园第一天
    看看AQS阻塞队列和条件队列
    简单看看LockSupport和AQS
    简单看看LongAccumulator
    JUC中的原子操作类及其原理
    java并发基础知识
    简单看看es6解构赋值
    简单使用vue-cli
  • 原文地址:https://www.cnblogs.com/nafio/p/9137072.html
Copyright © 2020-2023  润新知