首页 > 编程知识 正文

unity语言控制台,c未将对象引用设置到对象的实例

时间:2023-05-03 14:09:42 阅读:58008 作者:36

虽然您可以在最近处理项目时调用第三方C#库的方法,但运行该方法没有问题

但是在某些情况下,为了进行调试,我们希望输出C#库中的Log信息,以方便故障排除。

但是,在C# dll中输出日志时使用了Console.WriteLine等方法,但这种方法无法在Unity控制台中显示日志信息。 于是寻找了相关的方法,整理如下。

1 .查阅一些资料后发现,控制台可以设置重要方法“Console.SetOut”当前输出流

如下所示。

在VS Studio中创建新的C#控制台APP应用程序,并执行以下代码:

用户系统; using System.IO; namespaceconsoleapp1{ class program { staticvoidmain (string [ ] args ) console.writeline ) Helloworld! ' ); 文本写入器tw=console.out; //获取当前控制台的标准输出流,并将其临时存储在filestream fs=new filestream (' e :hello.txt )、FileMode.Create )中。 流写入器SW=new streamwriter (fs; 控制台. se tout (SW; //将控制台的当前输出流设置为" sw "," StreamWriter "表示" text writer " console.writeline (' mondayisagoodday!' 被继承); 控制台. se tout (tw; //当前输出流console.writeline (' tuesdayisagooddaytoo.' ); 控制台. se tout (SW; //现在又重新设定为“sw”与前面的结果进行对照的console.writeline (' wednesdayisagooddayhaha.' ); 控制台. se tout (tw; console.writeline (' thursdayisagooddayyoyo.' ); sw.Close (; //关闭流Console.ReadLine (; }}运行结果如下。

控制台输出结果:

在磁盘e上找到文件" Hello.txt ",然后按如下方式打开:

以上通过在“Console.SetOut”中变更当前的输出流,实现了在各个位置显示日志的效果

2.基于以上"Console.SetOut”的特性,是否可以在Unity中更改输出流

“Console.SetOut”需要用参数“TextWriter”来实现,但不想用“StreamWriter”来实现,所以这里为了继承TextWriter创建了新的自定义Class

using System.Collections; using system.collections.generic; using System.IO; using System.Text; 用户单元引擎; publicclassunitytextwriter 3360文本写入器{ publicoverrideencodingencoding encoding } get { return encoding.default; }私有stringbuilderbuffer=new stringbuilder (; publicoverridevoidflush ((debug.log ) buffer.tostring ) ); 由于Unity在此也通过“Debug.Log”向控制台buffer.Length=0输出了日志; //清空该“StringBuilder”的内容(publicoverridevoidwrite (char value ) buffer.append ) value ); if(value=='n ' )/c#不能使用' '作为判断条件,因为字符串的结尾不能用' '表示。 ({ Flush ) ); //以上“Flush”条件并不完全适用,string='hellonyou!' .在这种情况下,string是完整的语句,不能将“Flush”分两次输出。 使用Debug.Log时没有这个问题。 //但是,使用上述方法实现Console.WriteLine并将日志输出到Unity控制台就足够了}要在Unity中调用类中的方法,请执行以下操作:

publicclassnewbehaviourscript : mono behaviour { void start (} { console.se tout ) newunitytextwriter; //当前控制台输出流console.writeline (' todayisagoodday.' ); //输出日志}}执行结果如下。

这样,如果第三方C# dll包含" Console.WriteLine "语句,则可以直接输出dll日志语句以方便调试

以上。 各位,有问题的话请用信息交流哦。 呵呵呵

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。